我有一个使用.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);
}
ProviderName
为Oracle.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?我该怎么做才能解决问题?
提前谢谢!