2011-10-26 88 views
2

有没有办法将连接字符串传递给DbContext构造函数。 我真的很讨厌在应用程序或web.config中配置设置的想法DbContext和连接字符串(提供程序没有返回ProviderManifestToken字符串)

当你想引用你的dll包含你的EF模型时,你必须知道复制那个愚蠢的配置,而不是让它在一个中心位置,并具有构造函数访问该设置,无论在哪里去。

这是可能的还是我们被迫忍受这种挫折?并非每个EF模型都存在于Web应用程序或exe文件中。

感谢

UPDATE: 我认为这是错误相关的配置文件中缺少连接字符串。我传递了一个SqlConnection对象,它给了我同样的错误。为什么会发生这种错误?

回答

2

您可以使用带有可以是连接字符串的字符串的DbContext constructor重载。

string connectionString = "metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=\"data source=localhost;initial catalog=Test;integrated security=True;multipleactiveresultsets=True;App=EntityFramework\""; 
using (DbContext db = new DbContext(connectionString)) 
{ 
    var m = db.Set<Main>().Take(1).First(); 
    Console.WriteLine(m.Id); 
} 
+1

这是我在做什么,但每次我不针对我的本地\ SQLEXPRESS实例会引发和错误:'提供者未返回ProviderManifestToken string.' –

+0

不知道为什么你得到这个错误。我从配置文件复制了连接字符串,创建了一个'DbContext'并且它工作。将编辑答案以包含用于比较的代码。 –

+0

您是否需要在连接字符串中指定元数据文件才能使其工作?我认为POCO方法不需要任何这种元数据。我为现有数据库传递了一个普通的SQL Server连接字符串,我不打算修改其结构。 –

相关问题