2009-09-22 8 views
0

ADO.NET 서비스에 대한 간단한 연습이 있습니다. 목록 상자에서 선택 항목을 변경하면 목록 상자에 Unit 목록과 UnitInStock이 두 개의 텍스트 상자에 표시됩니다. 그런 다음 텍스트 상자의 데이터를 변경하고 변경 사항을 저장하십시오.ADO.NET 서비스 업데이트 오류

namespace TestApp 
{ 
    public partial class Form1 : Form 
    { 
     NorthwindDataContext ctx = new NorthwindDataContext(new Uri("http://localhost:3540/Northwind.svc/")); 
     public Form1() 
     { 
      InitializeComponent(); 
      var q = from p in ctx.Products 
        select p; 
      listBox1.DataSource = q.ToList(); 
      listBox1.DisplayMember = "ProductName"; 
     } 

     private void listBox1_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      var p = listBox1.SelectedItem as Product; 
      textBox1.Text = p.UnitPrice.ToString(); 
      textBox2.Text = p.UnitsInStock.ToString(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     {  
      var p = listBox1.SelectedItem as Product; 
      p.UnitPrice = Decimal.Parse(textBox1.Text); 
      p.UnitsInStock = short.Parse(textBox2.Text); 
      try 
      { 
       //ctx.AttachTo("Products", p); 
       //ctx.BeginSaveChanges(); 
       ctx.UpdateObject(p); 
       ctx.SaveChanges(SaveChangesOptions.None); 
      } 
      catch (Exception ex) 
      { 
       label3.Text = ex.Message; 
      } 
     } 
    } 
} 

ADO.NET 서비스가 괜찮 그 권한으로 설정 : 여기

클라이언트 측에서 모든 코드 내가 저장 버튼을 누르면 때

config.SetEntitySetAccessRule("*", EntitySetRights.All); 

, 나는 오류가 발생했습니다 메시지 : ex.Message = "이 요청을 처리하는 동안 오류가 발생했습니다."

이유가 확실하지 않습니다. 도와주세요.

답변

0

는 UserVerboseErrors

config.UseVerboseErrors = true; 

에 서비스 턴하시기 바랍니다 그리고 당신이 우리가 오류가 무엇인지 알려 완료 한 후에는 메소드 handleexception에게

protected override void HandleException(HandleExceptionArgs args) 

을 무시하는 것이 도움이 될 것입니다.

+0

하지만 문제의 근본 원인이된다면 다른 컨텍스트를 사용하여 데이터 서비스에서 가져온 객체 (p)를 사용하고 그 컨텍스트를 사용하여 저장하는 것이 좋습니다. – dmportella

+0

추가 후 config.UseVerboseErrors = true; 목록 상자와 저장 단추에 동일한 데이터 바인딩을 사용하면 동일한 컨텍스트 (메서드 수준이 아닌 클래스 수준에서 컨텍스트 만들기)를 사용하는지, 동일한 오류가 발생하는지 확인하십시오. – KentZhou

+0

하지만 어떤 오류가 발생합니까? 서비스의 내부 예외를 살펴보십시오. 즉, 핸들러 예외 오버로드에 중단 점을 넣고 실제 오류가 무엇인지 확인하십시오. – dmportella

0

이것은 Silverlight 클라이언트 또는 WinForms 용입니까? BeginSaveChanges()를 사용하여 SaveChanges()로 전환 한 이유가 무엇입니까?

관련 문제