如题:
之前在EF使用时,一直纠结于APPCONFIG中的配置的连接字符串,不能使用动态链接字符串;
经过对比,DbContext的构造函数中有一个构造函数如下:
//
// 摘要:
// 通过现有连接来连接到数据库以构造一个新的上下文实例。如果 contextOwnsConnection 是 false,则释放上下文时将不会释放该连接。
//
// 参数:
// existingConnection:
// 要用于新的上下文的现有连接。
//
// contextOwnsConnection:
// 如果设置为 true,则释放上下文时将释放该连接;否则调用方必须释放该连接。
[SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
[SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope")]
public DbContext(DbConnection existingConnection, bool contextOwnsConnection);
从该构造函数入手,每次创建一个新的链接,其中
contextOwnsConnection参数是设置为 true,使用完之后释放即可。
具体实现如下:
//您的上下文已配置为从您的应用程序的配置文件(App.config 或 Web.config)
//使用“LocalDb”连接字符串。默认情况下,此连接字符串针对您的 LocalDb 实例上的
//“com.InstrumentCar.Datas.LocalDb”数据库。
//
//如果您想要针对其他数据库和/或数据库提供程序,请在应用程序配置文件中修改“LocalDb”
//连接字符串。
public LocalDb()
: base(new SQLiteConnection(Config.Config.getDatabaseConnStr()),true/*"name=LocalDb"*/){}
在使用时,可按照下列方法使用:
using (LocalDb localdb = new LocalDb()) { ... }