使用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();
然后将添加所有对象。