如何在我的 T4 模板中使用我的 EF 上下文?

How do I use my EF context in my T4 template?

我正在尝试做一个相当简单的 TF,它会生成一个项目列表,但在我这样做之前,我想设置我的 DBContext。我正在尝试以下操作:

<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ assembly name="System.Configuration" #>
<#@ assembly name="System.Core" #>

<#@ import namespace="System.Configuration" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="MyProj.Data" #>

<#@ output extension=".cs" #>

namespace ModelGenerator
{
<#
    MyProj.Data.ProjectContext db;
#>
}

Compiling transformation: The type or namespace name 'MyProj' could not be found (are you missing a using directive or an assembly reference?)

我不确定我这样做是否正确。我正在尝试包含具有 .EDMX 文件的项目。

<#@ import namespace="MyProj.Data" #>

在 "MyProj" 项目中有 app.config 有一个名为“ProjectContext.

的连接字符串

我的项目中也有一个引用,其中包含 MyProj.Data 项目的 T4。

我需要做什么才能克服这个错误?

更新:

基于 Yacoub Massad 的评论。我改变了

<#@ import namespace="MyProj.Data" #>

对此:

<#@ assembly name="MyProj.Data" #>

现在我收到这个错误:

Compiling transformation: Metadata file 'MyProj.Data' could not be found

我打算留下这个问题,因为我认为评论中的程序集名称信息对开始使用 T4 模板的初学者很有价值。

如何实际使用 EF DBContext 的答案可以在这个问题中找到:

这个问题有分步说明的答案。