如何使用LINQ将C#类对象添加到实体表中

如何使用LINQ将C#类对象添加到实体表中,c#,asp.net-mvc,linq,C#,Asp.net Mvc,Linq,如何使用LINQ将class对象添加到Enity表中?prescriber对象是从FullMasters实体构建的,但我需要获取该对象并将其保存到EPCS_prescriber表中。我正在使用linq public class UserRepository : IUserRepository { SourceofTruthEntities context = null; ePrescribeEntities epcs = null; public UserReposit

如何使用LINQ将class对象添加到Enity表中?prescriber对象是从FullMasters实体构建的,但我需要获取该对象并将其保存到EPCS_prescriber表中。我正在使用linq

public class UserRepository : IUserRepository
{
    SourceofTruthEntities context = null;
    ePrescribeEntities epcs = null;

    public UserRepository()
    {
        context = new SourceofTruthEntities();
    }

    public List<FullMaster> SelectByNPI(string id)
    {
        var data = context.FullMasters.Where(x => x.NPI == id).ToList();
        return data;
    }

    public List<FullMaster> SelectByName(string first, string last)
    {
        var data = context.FullMasters.Where(x => x.FirstName == first && x.LastName == last).ToList();
        return data;
    }

    public void SavePrescriber(string id)
    {
        var data = context.FullMasters.Where(x => x.NPI == id).FirstOrDefault();

        Prescriber p = new Prescriber
        {
            First = data.FirstName,
            Last = data.LastName,
            DEA = data.DEA,
            License = data.LIC,
            Life = data.Life_Hosp,
            NPI = data.NPI
        };


        epcs.EPCS_Prescriber.Add(p);
        epcs.SaveChanges();

    }
}
公共类用户存储库:IUserRepository
{
SourceofTruthEntities上下文=null;
EPDescription实体epcs=null;
公共用户存储库()
{
context=新的sourceoftruth实体();
}
公共列表SelectByNPI(字符串id)
{
var data=context.FullMasters.Where(x=>x.NPI==id.ToList();
返回数据;
}
公共列表SelectByName(先字符串,后字符串)
{
var data=context.FullMasters.Where(x=>x.FirstName==first&&x.LastName==last.ToList();
返回数据;
}
公共无效存储指定程序(字符串id)
{
var data=context.FullMasters.Where(x=>x.NPI==id).FirstOrDefault();
处方医生p=新处方医生
{
First=data.FirstName,
Last=data.LastName,
DEA=data.DEA,
License=data.LIC,
寿命=数据寿命,
NPI=data.NPI
};
epcs。epcs_处方药。添加(p);
SaveChanges();
}
}

假设
epcs
是数据库上下文,那么您应该使用
epcs.epcs\u Prescriber.Insert(p)
而不是
AddObject(p)
,除非这不是一个数据库,您肯定只需要一个上下文吗?这应该适合您:

public void SavePrescriber(string id)
{
    var data = context.FullMasters.Where(x => x.NPI == id).FirstOrDefault();

    Prescriber p = new Prescriber
    {
        First = data.FirstName,
        Last = data.LastName,
        DEA = data.DEA,
        License = data.LIC,
        Life = data.Life_Hosp,
        NPI = data.NPI
    };

    context.EPCS_Prescribers.Add(p);
    context.SaveChanges();
}
确保您的…DbContext类包含以下内容:

...
public System.Data.Entity.DbSet<YourNamespace.Models.Prescriber> EPCS_Prescribers { get; set; }
...
。。。
public System.Data.Entity.DbSet EPCS_规定者{get;set;}
...

如有必要,请检查类/实体的名称。

两个上下文都需要初始化:

public UserRepository()
{
    context = new SourceofTruthEntities();
    ePrescribeEntities epcs = new ePrescribeEntities();
}

还要注意,
数据
可能为空…epcs.epcs\u Prescriber.AddObject(p);epcs。epcs_处方药。添加(p);SaveChanges();对于Add方法,我必须引用哪个程序集?您的问题到底是什么?不编译,运行时异常,不保存?请添加您得到的任何错误。“System.Data.Objects.ObjectSet”不包含“Insert”的定义,并且找不到接受“System.Data.Objects.ObjectSet”类型的第一个参数的扩展方法“Insert”(是否缺少using指令或程序集引用?)是的,我看到两个上下文都已初始化,但我正在获取一个类对象并试图将其保存到一个表实体,我收到了这个错误。是否有方法强制转换?错误5“System.Data.Objects.ObjectSet.AddObject(ePrescribe.Domain.Entities.Data.EPCS_Prescriber)”的最佳重载方法匹配具有一些无效参数。您只能将ePrescribe.Domain.Entities.Data.EPCS_Prescriber添加到您的EPCS_Prescriber实体中。您需要用数据填充EPCS_Prescriber类,并将其保存,而不是保存您自己的Prescriber类。如果可能的话,请使用p=new Prescriber do EPCS_Prescriber p=new EPCS_Prescriber。并确保设置System.data.Objects.ObjectSetI建议调用wait EPCS.SaveChangesSync()而不是EPCS.SaveChanges();
    public void SavePrescriber(string id)
    {
        var data = context.FullMasters.Where(x => x.NPI == id).FirstOrDefault();


        EPCS_Prescriber e = new EPCS_Prescriber();
        e.FirstName = data.FirstName;
        e.LastName = data.LastName;
        e.DeaNo = data.DEA;
        e.License = data.LIC;
        e.LifeNo = data.Life_Hosp;
        e.NpiNo = data.NPI;

        epcs.EPCS_Prescriber.AddObject(e);
        epcs.SaveChanges();

    }