3

我有一个旧版 EF 4 库,其中包含数据库首先生成的带有 EntityObjects 的 ObjectContext。我想慢慢迁移到使用 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。

4

1 回答 1

2

如您所述,您不能使用 edmx 创建的现有实体对象。

您是否考虑过使用逆向工程师 Code First 电动工具

我在几个项目中使用过它们,它很简单,只需将它指向您的数据库,它会在同一个项目中生成模型,然后删除 edmx 文件。

于 2012-09-07T17:24:03.640 回答