4

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

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

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

有什么办法吗?我没有使用codefirst,因为其中有一个数据库和数据,我同样没有使用modelfirst,我使用的是databasefirst但不能分开

4

1 回答 1

8

由于您的标题中有“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 文件。

于 2011-04-06T19:54:31.350 回答