0

ADO.NetEntityFrameworkを使用してデータベースにバインドされるWinFormを設計しました。ロード時に、詳細フォームにデータベースからのデータが入力されます。

アイテム間を移動することはできますが、アイテムを追加、保存、または更新することはできません。

以下は私のフォームのコードです:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {

    cpdEntities dbcontext;
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        dbcontext = new cpdEntities();
        cpd_recipientsBindingSource.DataSource = dbcontext.cpd_recipients.ToList();
    }


    private void cpd_recipientsBindingNavigatorSaveItem_Click(object sender, EventArgs e)
    {
        dbcontext = new cpdEntities();
        dbcontext.SaveChanges();
    }
}

}

4

2 に答える 2

0

各イベントでDbContextクラスを再インスタンス化するように見えます。saveItemイベントからDbContextの再インスタンス化を削除して、再試行してください。

于 2013-01-13T14:23:38.107 に答える
0

これは簡単な例ですEntityFramework 4

ロード方法:

 using (var con = new cpdEntities())
 {
    cpd_recipientsBindingSource.DataSource = con.cpd_recipients.ToList();
 }

挿入および更新方法:

   if (cpd_recipientsBindingSource.Current == null) return;
        using (var con = new cpdEntities())
        {

            var p = new Customer()
            {
                CustomerId = ((cpd_recipients)cpd_recipientsBindingSource.Current).Id,
                CustomerIdNo = IdNoTextBox.Text,
                CustomerName = CustomerNameTextBox.Text
            };

            var cus = new Customer();
            if (p.CustomerId > 0)
                cus = con.Customers.First(c => c.CustomerId == p.CustomerId);
            cus.CustomerId = p.CustomerId;
            cus.CustomerIdNo = p.CustomerIdNo;
            cus.CustomerName = p.CustomerName;

            if (p.CustomerId == 0)
                con.Customers.AddObject(cus);
            con.SaveChanges();
            int i = cus.CustomerId;//SCOPE_IDENTITY
        }
    }
于 2013-01-13T17:43:37.833 に答える