C# 使用实体框架向表中插入多行

C# 使用实体框架向表中插入多行,c#,entity-framework,linq-to-entities,C#,Entity Framework,Linq To Entities,我和英孚玩得很开心,而且我已经摆脱了困境 最初,我使用标准linq使用以下代码位,基本上将一些数据输入到表中 ManagePreferencesDataContext manpref = new ManagePreferencesDataContext(); tblManagePreference prefMemberID = new tblManagePreference(); { pre

我和英孚玩得很开心,而且我已经摆脱了困境

最初,我使用标准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();
ManagePreferencesDataContext manpref=新的ManagePreferencesDataContext();
tblManagePreference prefMemberID=新tblManagePreference();
{
prefMemberID.Username=CreateUserWizard1.Username;
prefMemberID.MemberID=tbxMemberID.Text.ToString();
prefMemberID.LocationID=tbxLocationID.Text.ToString();
prefMemberID.Preference=“MemberID”;
}
tblManagePreference prefLocationID=新的tblManagePreference();
{
prefLocationID.Username=CreateUserWizard1.Username;
prefLocationID.MemberID=tbxMemberID.Text.ToString();
prefLocationID.LocationID=tbxLocationID.Text.ToString();
prefLocationID.Preference=“LocationID”;
}
列表ie=新列表();
ie.Add(prememberid);
ie.Add(预定位ID);
manpref.tblManagePreferences.InsertAllOnSubmit(ie);
manpref.SubmitChanges();
现在,我尝试使用EF复制相同或类似的代码,但完全失败了

我尝试使用列表和.AdtoToBMuleMeCopyPosits,但接收到一个“弃用方法”,将一个新对象添加到TBLMaMeLePosivyEngTyTeSET中。 我简要地看了一下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();
VDSORDAL.PDC_VDSOREntities manpref=新的PDC_VDSOREntities();
tblUserPreference prefMemberID=新的tblUserPreference();
{
prefMemberID.Username=CreateUserWizard1.Username;
prefMemberID.MemberID=tbxMemberID.Text.ToString();
prefMemberID.LocationID=tbxLocationID.Text.ToString();
prefMemberID.ColumnName=“MemberID”;
}
tblUserPreference prefLocationID=新的tblUserPreference();
{
prefLocationID.Username=CreateUserWizard1.Username;
prefLocationID.MemberID=tbxMemberID.Text.ToString();
prefLocationID.LocationID=tbxLocationID.Text.ToString();
prefLocationID.ColumnName=“LocationID”;
}
列表ie=新列表();
ie.Add(prememberid);
ie.Add(预定位ID);
manpref.AddObject(PDC_VDSOR实体,ie);
manpref.SaveChanges();
如果有人曾经使用过类似的东西,或者能为我指出正确的方向,我将不胜感激


尽管我很热情,但我现在还是忍不住觉得自己像猪屎一样难受。

我想你已经在实体框架设计器中重新创建了你的模型?这应该创建一个从特定于你的模型的ObjectContext派生的类。按照惯例,这以“实体”结尾

请查看您的
managepreferencesenties
实例或您的任何调用。它应该有一个属性,对应于您实体的表,可能是
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);
         }
     }
}
公共静态类ObjectSetExtensions
{
公共静态void AddObjects(此ObjectSet ObjectSet,IEnumerable objects)
{
foreach(对象中的变量项)
{
objectSet.AddObject(项);
}
}
}

请尝试以下代码:


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

我现在正在使用实体框架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();

然后将添加所有对象。

你好,塞缪尔,谢谢你帮我看这个。我尝试了以下操作(请参见上面的编辑)但是没有成功。很抱歉,我对这一切都很陌生,我无法理解!你能确认在PDC\u VDSORTEGITIES上有一个名为tblUserPreferences的属性吗?非常棒的东西-谢谢你,山姆。非常有用。我欠你一品脱。是的,有一个名为tblUserPreferences的属性(抱歉-我尝试将其添加到我们的评论线程,但不允许:S)