EF4/6 之间的插入方法差异

Inserting method differences between EF4/6

我最近才开始使用 EF6。以前插入一个对象,就是像这个假例子的代码(我在写医疗软件,因此,vitals):

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 是从现有数据库生成的,它将自动创建具有最少(不可空)列的构造函数 (edit)。检查数据库以查看需要哪些是一件简单的事情,但是将列表自动放入构造函数中非常棒。

有人知道这背后的原因吗,或者如果我只是找不到它移动到哪里了?

在 EF4 中,与使用 DbContext 的 EF6 相比,使用的是 ObjectContext。生成代码背后的 T4 模板在这些版本之间是不同的,早期的默认构造函数不再可用

EF6 中创建的 POCO classes 比 EF4 中现有的更轻、更干净。恐怕你不得不自己做。

您仍然可以使用以下代码和访问方法(如 AddObject)访问 EF6 中的 ObjectContext。

(dbContext as IObjectContextAdapter).ObjectContext

不过你不需要再这样做了。使用 DbContext 中可用的 DbSet 来执行添加操作会是更好的方法。

注意:有可用的 T4 模板可以为您提供早期的 class EF6 结构,但可能不推荐使用。