使用Entity Framework将多行插入表中

我和EF玩得很开心。

最初我使用标准linq的以下代码,基本上将一些数据输入到表中。

ManagePreferencesDataContext manpref = new ManagePreferencesDataContext(); tblManagePreference prefMemberID = new tblManagePreference(); { prefMemberID.Username = CreateUserWizard1.UserName; prefMemberID.MemberID = tbxMemberID.Text.ToString(); prefMemberID.LocationID = tbxLocationID.Text.ToString(); prefMemberID.Preference = "MemberID"; } tblManagePreference prefLocationID = new tblManagePreference(); { prefLocationID.Username = CreateUserWizard1.UserName; prefLocationID.MemberID = tbxMemberID.Text.ToString(); prefLocationID.LocationID = tbxLocationID.Text.ToString(); prefLocationID.Preference = "LocationID"; } List ie = new List(); ie.Add(prefMemberID); ie.Add(prefLocationID); manpref.tblManagePreferences.InsertAllOnSubmit(ie); manpref.SubmitChanges(); 

现在,我试图使用EF复制相同或相似的代码并完全解开。

我尝试使用列表和.AddTotblManagePreferences,但收到一个“不推荐使用的方法,用于向tblManagePreferences EntitySet添加新对象。 请考虑使用关联的ObjectSet属性的.Add方法。

我已经简要介绍了ObjectSet,但我不确定如何修改代码。

  VDSORDAL.PDC_VDSOREntities manpref = new PDC_VDSOREntities(); tblUserPreference prefMemberID = new tblUserPreference(); { prefMemberID.Username = CreateUserWizard1.UserName; prefMemberID.MemberID = tbxMemberID.Text.ToString(); prefMemberID.LocationID = tbxLocationID.Text.ToString(); prefMemberID.ColumnName = "MemberID"; } tblUserPreference prefLocationID = new tblUserPreference(); { prefLocationID.Username = CreateUserWizard1.UserName; prefLocationID.MemberID = tbxMemberID.Text.ToString(); prefLocationID.LocationID = tbxLocationID.Text.ToString(); prefLocationID.ColumnName = "LocationID"; } List ie = new List(); ie.Add(prefMemberID); ie.Add(prefLocationID); manpref.AddObject(PDC_VDSOREntities,ie); manpref.SaveChanges(); 

如果有人之前沿着这些方向使用了某些东西,或者可以指出我正确的方向,我将非常感激。

虽然热情,但我不禁感慨猪屎此刻。

我假设您已在Entity Framework设计器中重新创建了模型? 这应该创建一个派生自特定于您的模型的ObjectContext的类。 按照惯例,这以“实体”结束。

看看你的ManagePreferencesEntities实例 – 或者你的所有调用实例。 它应该有一个属性,对应于你的实体的表,也许是tblManagePreferences 。 这是该特定表的ObjectSet实例,它有一个AddObject方法,可用于将实体添加到该表中。

试试这个而不是最后5行左右的代码:

 manpref.tblUserPreferences.AddObject(prefMemberId); manpref.tblUserPreferences.AddObject(prefLocationId); manpref.SaveChanges(); 

默认情况下,ObjectSet不支持添加事物列表,但是创建自己的扩展方法很容易:

 public static class ObjectSetExtensions { public static void AddObjects(this ObjectSet objectSet, IEnumerable objects) { foreach (var item in objects) { objectSet.AddObject(item); } } } 

请尝试以下代码:

 manPref.tblManagePreference.Add(prefMemberID); manPref.tblManagePreference.Add(prefLocationID); manPref.SaveChanges(); 

我现在正在使用entity framework5。
当你使用:

 objectcontext.Add(yourobject1); objectcontext.Add(yourobject2); objectcontext.SaveChanges(); 

然后只将最后一个对象插入数据库。

但是,如果你将使用:

 objectcontext.Entry(yourobject1).State = System.Data.EntityState.Added; objectcontext.Entry(yourobject2).State = System.Data.EntityState.Added; objectcontext.SaveChanges(); 

然后将添加所有对象。