我最近才开始使用EF6。在过去,为了插入一个对象,它是类似于这个假示例的代码(我正在编写医疗软件,因此,生命周期):
using (DatabaseThingy ObjectContext = new DatabaseThingy(Connection))
{
vitals pcrVital = vitals.Createvital(0, pcrEntity.idPcr, timeTaken, pulse);
ObjectContext.vitals.AddObject(pcrVital);
ObjectContext.SaveChanges();
return pcrVital;
}现在我读到的每一篇文章都告诉我要这样做:
using (DatabaseThingy ObjectContext = new DatabaseThingy(Connection))
{
vitals pcrVital = new vitals(){
idVitals = 0,
idPcr = pcrEntity.idPcr,
timeTaken = timeTaken,
pulse = pulse
};
ObjectContext.vitals.Add(pcrVital);
ObjectContext.SaveChanges();
return pcrVital;
}当我使用EF6时,第一个方法不存在。第一种方法的好处是,如果EDMX是从已经存在的数据库中生成的,它将自动创建具有最小(非空)列(编辑)的构造函数。检查数据库以查看哪些是必需的是一件很简单的事情,但是将列表自动放入构造函数是非常棒的。
有没有人知道这背后的原因,或者我根本找不到它搬到哪里去了?
发布于 2015-04-14 21:56:37
在EF4中使用的是ObjectContext,而使用DbContext的是EF6。生成代码背后的T4模板在这些版本之间是不同的,而早期的默认构造函数不再是可用的。
在EF6中创建的POCO类比在EF4中创建的要轻得多,也更干净。恐怕你得自己去做。
您仍然可以使用下面的代码和访问方法(如ObjectContext )访问EF6中的AddObject。
(dbContext as IObjectContextAdapter).ObjectContext不过,你不必再这样做了。使用DbSet中可用的DbContext来执行添加操作是一种更好的方法。
注意:有可用的T4模板可以为您提供早期的EF6类结构,尽管可能不推荐它。

https://stackoverflow.com/questions/29637538
复制相似问题