entity-framework - 分离 Entity Framework poco 和 objectcontext

标签 entity-framework entity-framework-4 database-first

到目前为止,我正在创建一个 classLibrary 项目并插入新的 Ado.net 实体数据模型并从 exixting 数据库中生成。类和对象类代码是自动创建的。
这对我来说并不重要。

但我想这样做并将 ObjectContext 类(例如:SomeEntities)和表类分离到两个 calss 库中。

当我更改数据库表属性时,我将更新 edmx 模型并且类将自动更新。

有没有办法做到这一点?
我没有使用 codefirst 因为里面有一个数据库和数据,
我也没有使用模型优先,
我正在使用数据库,但不能分开

最佳答案

由于您的标题中有“poco”,我猜您正在使用 EF4 POCO Generator T4 模板。

那么是的,您可以将 POCO 类和 ObjectContext 分成两个不同的类库。 T4 模板是为该场景准备的,因为它包含两个不同的文件:

  • POCOGenerator.Context.tt -> 负责创建您的派生 ObjectContext
  • POCOGenerator.tt -> 负责创建您的 POCO 实体

  • 如果您在拥有 EDMX 文件的类库中添加 POCO 生成器,则默认情况下,两个 tt 文件都将添加到那里。

    但是您可以将第二个文件 (POCOGenerator.tt) 移动到另一个类库中。 (上下文所在的 EDMX 项目需要引用这个库来识别 POCO 类。)然后在文本编辑器中打开这个文件。此文件中的一些第一行将如下所示:
    ...
    string inputFile = @"MyModel.edmx";
    EdmItemCollection ItemCollection = loader.CreateEdmItemCollection(inputFile);
    ...
    

    您现在需要更改 edmx 文件的路径(仅在 POCOGenerator.tt 中,保持 POCOGenerator.Context.tt 不变)。假设您在 Visual Studio 的同一个解决方案中有 edmx 项目和 POCO 项目,则新路径可能是:
    ...
    string inputFile = @"..\..\MyEDMXProject\MyModel.edmx";
    EdmItemCollection ItemCollection = loader.CreateEdmItemCollection(inputFile);
    ...
    

    现在,您可以从两个不同的项目中分别执行这两个文件。一个将创建上下文文件,另一个将创建您的 POCO 文件。

    关于entity-framework - 分离 Entity Framework poco 和 objectcontext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5565633/

    相关文章:

    c# - Entity Framework 核心数据库首先不渲染存储过程模型?

    c# - 仅 Entity Framework 代码错误 : the model backing the context has changed since the database was created

    c# - ObjectContext.CreateDatabase() 创建不在 .edmx 模型中的附加表

    c# - 导航属性上的 LINQ 过滤器

    .net - 可以使用存储库模式 + 存储过程吗?他们应该/可以返回 IQueryable 吗?

    entity-framework-4 - 好的 Entity Framework 教程

    c# - 更改源后 ICollectionView 排序不起作用

    c# - 如何在 EF4 中正确使用 InOut ObjectParameter?

    linq - Entity Framework 4.1 数据库优先 : Table Inheritance