我有一个遗留的 EF 4 库,其中包含数据库优先生成的 ObjectContext 和 EntityObjects。我想慢慢迁移到使用 DbContext 并且需要一些指导。
DbContext 的重载之一采用现有的 ObjectContext。我认为这将允许我将现有的 ObjectContext 包装在 DbContext 中,并通过 IDbSet 属性公开现有的 EntityObjects。不幸的是,在创建 DbContext 时,不会创建 IDbSet 属性,而是会抛出一条异常消息:“验证该类型是否被定义为一个类,不是原始的、嵌套的或通用的,并且没有从 EntityObject 继承。 "
没有办法使用带有 IDbSet 的 DbContext 来暴露现有的 ObjectContext 和 EntityObjects 吗?我可以使用 ObjectContext 创建 DbContext,但不公开实体本身,这似乎很奇怪。
下面是一些示例代码:
public class MyDbContext : DbContext
{
public MyDbContext(MyObjectContext objectContext, bool dbContextOwnsObjectContext)
: base(objectContext, dbContextOwnsObjectContext)
{
}
public IDbSet<Person> People { get; set; }
}
异常是由 DbContext 试图创建 IDbSet 引起的。 Person 是我现有 EDMX 中的 EntityObject。
最佳答案
如您所述,您不能使用 edmx 创建的现有实体对象。
您是否考虑过使用 Reverse Engineer Code First power tools ?
我已经在多个项目中使用过它们,只需将其指向您的数据库即可,它会在同一个项目中生成模型,然后删除 edmx 文件。
关于entity-framework - 缓慢迁移 EDMX 应用程序以使用 DbContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12322626/