我對ADO.NET服務有一個非常簡單的練習:將產品列表放入列表框中,當列表框中的選擇更改時,在兩個文本框中顯示UnitPrice和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 2009-09-22 15:27:09
添加config.UseVerboseErrors = true後;並確保數據綁定到列表框和保存按鈕使用相同的上下文(創建上下文在類級別,而不是方法級別),我仍然得到相同的錯誤。 – KentZhou 2009-09-22 15:38:15
但你得到什麼錯誤?查看服務的內部異常,即在handleexception超載上放置一個斷點並查看實際錯誤。 – dmportella 2009-09-23 09:41:59