【问题标题】:ADO.NET Service update errorADO.NET 服务更新错误
【发布时间】:2011-01-08 20:12:59
【问题描述】:

我对 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 = "处理此请求时发生错误。"

不知道为什么。请帮忙。

【问题讨论】:

    标签: wcf-data-services


    【解决方案1】:

    请在您的服务上打开 UserVerboseErrors

    config.UseVerboseErrors = true;
    

    重写handleexception方法会很有帮助

    protected override void HandleException(HandleExceptionArgs args)
    

    完成后告诉我们错误是什么。

    【讨论】:

    • 但是,如果我要打赌问题的根源,那将是您正在使用一个对象 (p),该对象 (p) 是使用不同的上下文从数据服务中获取的,然后是您用来保存的对象它。
    • 添加后 config.UseVerboseErrors = true;并确保数据绑定到列表框和保存按钮使用相同的上下文(在类级别创建上下文,而不是方法级别),我仍然得到同样的错误。
    • 但是您遇到了什么错误?查看服务的内部异常,即在handleexception重载上下一个断点,看看实际的错误是什么。
    【解决方案2】:

    这是针对 Silverlight 客户端还是 WinForms?为什么从使用 BeginSaveChanges() 切换到 SaveChanges()?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-04
      • 1970-01-01
      • 1970-01-01
      • 2011-02-18
      • 2015-09-19
      • 2017-06-29
      • 1970-01-01
      • 2011-09-25
      相关资源
      最近更新 更多