0

ADO.NET Service に関する非常に簡単な演習があります。製品のリストをリスト ボックスに入れ、リスト ボックスで選択が変更されたときに、UnitPrice と UnitInStock を 2 つのテキスト ボックスに表示します。次に、テキスト ボックス内のデータを変更し、変更を保存します。

クライアント側のすべてのコードは次のとおりです。

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 = "このリクエストの処理中にエラーが発生しました" というエラー メッセージが表示されました。

理由がわからない。助けてください。

4

2 に答える 2

0

サービスで UserVerboseErrors をオンにしてください

config.UseVerboseErrors = true;

また、メソッド handleexception をオーバーライドすると便利です

protected override void HandleException(HandleExceptionArgs args)

完了したら、エラーの内容をお知らせください。

于 2009-09-22T15:25:45.893 に答える
0

これは Silverlight クライアントまたは WinForms 用ですか? なぜ BeginSaveChanges() から SaveChanges() に切り替えたのですか?

于 2009-10-06T23:31:03.250 に答える