EF中DbContext如何使用自定义数据源,而不是使用app.config中的链接字符串


如题:

之前在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())
{
    ...
}





你可能感兴趣的:(数据库,C#)