[英]Inserting multiple rows into a table using 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<tblManagePreference> ie = new List<tblManagePreference>();
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<tblUserPreference> ie = new List<tblUserPreference>();
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<T>(this ObjectSet<T> objectSet, IEnumerable<T> objects)
{
foreach (var item in objects)
{
objectSet.AddObject(item);
}
}
}
我现在正在使用实体框架5。
当你使用:
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();
然后将添加所有对象。
请尝试以下代码:
manPref.tblManagePreference.Add(prefMemberID);
manPref.tblManagePreference.Add(prefLocationID);
manPref.SaveChanges();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.