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