我对ADO.NET服务进行了一个非常简单的练习:将Product列表放在列表框中,当列表框中的选择发生变化时,在两个文本框中显示UnitPrice和UnitInStock。 然后更改文本框中的数据并保存更改。
以下是客户端的所有代码:
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 :(得分:0)
请在您的服务上打开UserVerboseErrors
config.UseVerboseErrors = true;
覆盖方法handleexception
会很有帮助protected override void HandleException(HandleExceptionArgs args)
完成后,请告诉我们错误是什么。
答案 1 :(得分:0)
这适用于Silverlight客户端还是WinForms?为什么要从使用BeginSaveChanges()切换到SaveChanges()?