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 = "이 요청을 처리하는 동안 오류가 발생했습니다."
이유가 확실하지 않습니다. 도와주세요.
하지만 문제의 근본 원인이된다면 다른 컨텍스트를 사용하여 데이터 서비스에서 가져온 객체 (p)를 사용하고 그 컨텍스트를 사용하여 저장하는 것이 좋습니다. – dmportella
추가 후 config.UseVerboseErrors = true; 목록 상자와 저장 단추에 동일한 데이터 바인딩을 사용하면 동일한 컨텍스트 (메서드 수준이 아닌 클래스 수준에서 컨텍스트 만들기)를 사용하는지, 동일한 오류가 발생하는지 확인하십시오. – KentZhou
하지만 어떤 오류가 발생합니까? 서비스의 내부 예외를 살펴보십시오. 즉, 핸들러 예외 오버로드에 중단 점을 넣고 실제 오류가 무엇인지 확인하십시오. – dmportella