c# - Entity Framework 、依赖注入(inject)和共享对象

标签 c# entity-framework dependency-injection

我想在使用 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/

相关文章:

c# - 最新日期的 Lambda 表达式

java - 如何在非 Android Gradle Java 应用程序中使用 Dagger?

c# - WCF 服务可测试性和依赖注入(inject)

c# - ASP.NET核心MVC : split hosting and business-logic/ui into separate projects

c# - 解密/加密后 user.config 中缺少条目

entity-framework - 用于轨道和专辑模型的 EF5 Code First Fluent EntityTypeConfiguration

c# - C#中如何判断集合中对象的类型

java - 在 Dagger 中实现单例构建器

c# - 如何禁止调用方法 C#

c# - LDAP 查询中的 LDAP 注入(inject) c#