T4模板无法找到Oracle.DataAccess

时间:2017-07-07 11:26:17

标签: c# oracle petapoco

我有一个使用.NET 3.5和PetaPoco 4.0.3(微型ORM库)的项目。 我还引用了Oracle.DataAccess。

PetaPoco是一个微型ORM库,它有一个T4模板,可以自动从数据库创建POCO类。 Database.tt包含T4模板并创建Database.cs类。

当我尝试从T4模板Database.cs创建Database.tt时,我总会收到同样的错误:

Failed to load provider `Oracle.DataAccess.Client` - Unable to find the requested .Net Framework Data Provider.  It may not be installed.

我调试了T4代码生成,我发现问题是加载Oracle驱动程序:

/* This a part of T4 Template */
DbProviderFactory _factory;
try
{
    _factory = DbProviderFactories.GetFactory(ProviderName);
}

ProviderNameOracle.DataAccess.Client

我尝试在相同项目的Program.cs中重现该问题,但它确实有效!

class Program
    {
        static void Main(string[] args)
        {
    DbProviderFactory _factory = DbProviderFactories.GetFactory("Oracle.DataAccess.Client");
    DbConnection dbconnection = _factory.CreateConnection();
        }
    }

所以,我无法理解为什么在同一个项目中,DbProviderFactory可以找到Oracle.DataAccess.Client的驱动程序而不是T4的驱动程序。哪个执行上下文使用T4?我该怎么做才能解决问题?

提前谢谢!

0 个答案:

没有答案