使用EF操作不同数据库(以SQLite为例)

最近一直在和数据库作对。

从安卓平台上给了我个SQLite数据库,要求程序能够读取不同的文件。由于字段实在太多,不愿意直接使用原来直接读取datatable的方式来做,手动写映射太痛苦...于是想起来EF来。

那么问题来了,学习EF的时候,一般都是直接在app.config或者web.config中写入connectionstring,操作一个数据库的时候挺好,但是如果要操作的数据库需要临时指定的话,就比较麻烦,写进去不太合适。

我的第一个想法,就是使用DbContext构造函数的重载

public MyDbContext ()
    :base("ConnectionStringorName")
{

}

这里面可以接受一个连接字符串或者config文件的name。

P.S. 使用连接字符串的时候,直接填入就可以,使用name的时候,填入的样子类似"name=myconn"

使用name不合适了,直接使用连接字符串呢,provider怎么指定?不指定会不会直接用SQL EXPRESS呢?自己想了想,没有再去试了,应该也是可以的,写完再补。

第二个办法,就是使用Database.Connection设置连接字符串,具体方法如下:

public MyDbContext(string connection)
        {
            Database.Connection.ConnectionString = GetSqliteString(connection);
        }

这里不调用base里面的方法,对于mysqlite,getsqlitestring如下:

        private string GetSqliteString(string connect)
        {
            return "Data Source=" + connect;
        }

这样就能操作connectionstring了,只需要连接的时候传递一个路径就可以了。

同理,使用其他类型的数据库也可以这么操作,虽然实际上估计这么用的人不多。

时间: 2024-10-03 14:56:31

使用EF操作不同数据库(以SQLite为例)的相关文章

使用EF操作Oracle数据库小计

1.建表 CREATE TABLE item.ORDERS( ORDERID NUMBER(20) CONSTRAINT PK_ORDERS PRIMARY KEY, ORDERNO VARCHAR2(20), STOREID NUMBER(20), STOREOWNERID NUMBER(20), CUSTOMERID NUMBER(20), ORDERTYPE NUMBER(3), ORDERSTATUS NUMBER(3) ); 2.ID自增列设置 create sequence ITEM

DotnetCore之旅(4-1)---使用EF操作Mssql数据库

首先,创建数据库并创建数据表 测试数据表建表脚本 1 USE [JobDb] 2 GO 3 4 /****** Object: Table [dbo].[Account] ******/ 5 SET ANSI_NULLS ON 6 GO 7 8 SET QUOTED_IDENTIFIER ON 9 GO 10 11 CREATE TABLE [dbo].[Account]( 12 [Id] [uniqueidentifier] NOT NULL, 13 [Code] [nvarchar](50)

EF操作多数据库

1.Account3_Register_DB_Model作为(空)模板库,根据此模板生成的其他数据除了数据库名称不一样,其他表,视图,字段等等都一致 2.Account3_Platform_Master数据库记录各个数据库的名称,连接该数据库的账号密码等基础信息 3.分别根据Account3_Register_DB_Model以及Account3_Platform_Master生成对应的数据库模型 4.将生成得到的Account3_Register_DB_Model.edmx展开并且打开Acco

DotnetCore之旅(4-1)---使用EF操作Mysql数据库

首先.创建数据库并创建对应的表 1 CREATE TABLE `managementaccount` ( 2 `Id` char(36) NOT NULL COMMENT 'id', 3 `Email` varchar(150) DEFAULT NULL COMMENT '邮箱', 4 `Name` varchar(150) DEFAULT NULL COMMENT '名称', 5 `Password` varchar(150) DEFAULT NULL COMMENT '密码', 6 `Amo

Oracle数据库用EF操作的示例

Using EF Oracle Sample Provider with EDM Designer  (from msdn) Many people are asking if it is possible to use EFOracleProvider with EDM Designer in Visual Studio 2008 SP1. The answer is yes, but because the sample doesn't include a DDEX provider req

Qt之操作数据库(SQLite)实例

QtSql模块提供了与平台以及数据库种类无关的访问SQL数据库的接口,这个接口由利用Qt的模型视图结构将数据库与用户界面集成的一套类来支持.QSqlDatabase对象象征了数据库的关联.Qt使用驱动程序与各种数据库的应用编程接口进行通信.Qt的桌面版(Desktop Edition)包括如下一些驱动程序: 驱动程序 数据库  QDB2 IBM DB2 7.1版以及更新的版本  QIBASE Borland InterBase QMYSQL MySql  QOCI 甲骨文公司(Oracle Ca

EF操作数据库的步骤和一些简单操作语句

这里是写给我自己做记录的,不会写成一篇很好的博客,也不会置顶,如果有朋友看到了,而且觉得里面的内容不咋的,希望见谅哈! 关于这部分内容,这里推荐一篇总结的非常好的博客,如果你点击进来了,那么请略过下面的内容,直接点击这个链接,因为写的真的不错:https://www.cnblogs.com/gosky/p/5751815.html. 我个人还没有对EF相关的内容进行详细的整理,所以这篇随笔的参考意义不大,只是贴一些代码上去,以后有机会有时间,会对相关内容做一个总结. 使用EF操作数据库的详细步骤

EF之DBFirst数据库先行

   在上篇文章中,宏观的了解了EF的概念和类型,下面就来讲讲关于DBFirst(数据库先行)的详细步骤吧. DatabaseFirst就是围绕数据库为中心的开发方式,使用这种模式我们必须要先设计和创建数据库,然后使用VS在已有数据库的基础上创建ADO.NET实体数据模型,之后就可以在编程的过程中使用EF访问和操作数据库里的数据了,具体的如何使用,下面来看一个很简单的例子. 因为是数据库先行就先来看看高校云平台的数据库吧: 这张表是我做新生入学配置学号的一张表,下面我们来建立一个简单的控制台程序

基础篇:6.Android数据库编程---SQLite

简介: 在Android平台上,继承了一个嵌入式关系型数据库---SQLite.SQLite具有跨平台特性,可以在所有主要的操作系统上运行.SQLite通过独占性和共享锁实现独立事务处理,因此多个进程可以在同一时间从同一数据库读取数据,但只有一个可以写入数据,在进行写操作之前,必须先获得独占锁.另一方面,SQLite采取动态数据类型,当某个值插入数据库时,SQLite会检查它的类型,如果该类型与所关联的列不匹配,SQLite则会进行强制转换.SQLite支持以下几种数据类型:NULL(空值).I