entity-framework - 缓慢迁移 EDMX 应用程序以使用 DbContext?

标签 entity-framework dbcontext edmx

我有一个遗留的 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/

相关文章:

asp.net - Entity Framework DAL、BLL 与存储库模式

带有内存数据库的 C#/OSX

visual-studio - 如何创建没有 "No migrations configuration type was found in the assembly"问题的迁移?

c# - 加载 SNI.dll 失败

entity-framework - 从 ospace 属性名称获取列名称 (sspace)

entity-framework - DbContext.Entry 性能问题

c# - 更改 EDMX 中所有表的架构名称

c# - Entity Framework 函数是否自动转义输入以防止注入(inject)?

entity-framework - 列名无效