gpt4 book ai didi

entity-framework - 分离 Entity Framework poco 和 objectcontext

转载 作者:行者123 更新时间:2023-12-04 23:30:37 26 4
gpt4 key购买 nike

到目前为止,我正在创建一个 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/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com