我想在使用 Entity Framework 的项目中使用依赖关系。 Entity Framework 使用partial关键字基于表结构创建类。我创建的服务接口(interface)与这些类一起使用。
我想将这些类移动到名为共享对象的项目中,以便应用程序不需要直接包含数据库项目即可工作。是否可以将物体移出?我很担心,因为它们是自动生成的。
最佳答案
是的,您可以添加类库项目并将模板移至该项目。 T4 文件的命名类似于您的 EDMX 文件,但不以“.Context.tt”结尾。
一个简单的方法是,将空文本模板文件添加到您的类库项目中,并粘贴NameOfYourEDMXFile.tt的内容,然后删除原始文本templatefile 并最后更改新文本模板内的值 inputFile const 以匹配 EDMX 位置。
<#@ template language="C#" debug="false" hostspecific="true"#>
<#@ include file="EF6.Utility.CS.ttinclude"#><#@
output extension=".cs"#><#
//const string inputFile = @"SampleModel.edmx"; //ORIGINAL
const string inputFile = @"..\SNE.Console\SampleModel.edmx";
如果您尝试构建项目,您将收到有关缺少指令或使用的错误,请修复 NameOfYourEDMXFile.context.tt 以包含实体类的新位置,如下所示( EF6 文本模板上的第 46 行大约):
#>
using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
//line 46 of SampleEDMX.Context.tt
using Sample.Shared; //I added this using to fix the build
<#
if (container.FunctionImports.Any())
{
#>
仅此而已。如果您不喜欢这种方法,您可以查看我推荐的 Code-First 方法。 https://msdn.microsoft.com/en-us/data/jj193542.aspx
关于c# - Entity Framework 、依赖注入(inject)和共享对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31434543/