ef支持的数据库
‘壹’ 用EF连接Oracle数据库,运行报错
数据库为Oracle,就不要使用EF了。
问题已经很明显。“Make sure the provider is registered in the 'entityFramework' section of the application config file”,就是让你看看在App.config文件中的<provider>。
【源文件中的内容如下】:
<entityFramework>
<provider invariantName="System.Data.sqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</entityFramework>
按理说,只要将<provider />写成:
<provider invariantName="Oracle.ManagedDataAccess.Client" type="System.Data.OracleProviderServices, EntityFramework.OracleServer" />
之类即可,但是可悲啊!
目前支持EF6的provider有:
(1)Microsoft SQL Server provider
(2)Microsoft SQL Server Compact Edition provider
(3)Devart dotConnect Data Providers 【注意】
(4)Firebird provider
(5)Visual Fox Pro porvider
(6)MySQL
(7)PostgreSQL
1、2、4、5、7均可以从NuGget中获取。3、7需要到相应的网站获取。
注意第三个:这个插件就是用于Oracle数据库的,其为第三方插件,由Devart公司开发。但有两大致命缺点:1、收费(是30天免费试用,过了30天要么卸载,要么付款)。2、目前支持的Oracle的最高版本为:Oracle8.2i。
‘贰’ ef支持sqlite codefirst 吗
下载system.data.sqlite安装包,在system.data.sqlite.org上下载对应.NET Framework x.x版本的安装包。安装system.data.sqlite,按照提示一步一步执行即可。
下载SQLiteStudio,直接运行exe文件。创建数据库,以及操作数据表等等。
环境搭建好后就开始创建C#工程了,这里举例创建了一个Winform工程。在工程里引入system.data.sqlite.dll。注意:引用窗口打开后选择浏览,在安装目录下找到dll。默认安装路径是 C:\Program Files\System.Data.SQLite\2010\bin。如果不是使用VS2010,路径会不同
除了引用system.data.sqlite以外,还需要把SQLite.Interop.dll复制到程序根目录。
5
至此C#操作SQLite的开发环境就搭建好了。
6
异常解决:在实际使用中遇到了Unable to open the database file异常。查找了很久原因,排除了目录读写权限,连接字符串中增加Pooling=True;Journal Mode=Off;均为解决问题。后来发现我使用的是属性get来生产连接字符串,改为静态成员变量就没有问题了。这个问题还和操作系统有关,在win7上运行没有问题,在XP和2003上运行才会出现这个问题。
‘叁’ 如何使用EF处理数据库中的XML字段
数据库字段类型
XML字段的操作
数据库表名是
mengzhuDB
字段名:PropertyXml
<a>
<b>
<b1>11111</b1>
</b>
</a>
select
PropertyXml.value('(/a/b/b1)[1]','int')
from
mengzhuDB
where
Id='唯一标识'
declare
@a
int
set
@a
=
22222
update
mengzhuDB
set
PropertyXml.modify('replace
value
of
(/a/b/b1/text())[1]
with
"'+@a+'"')
where
Id='唯一标识'
更新后的结果就是
<a>
<b>
<b1>22222</b1>
</b>
</a>
declare
@sqltxt
varchar(1000),@a
int
set
@a=60
set
@sqltxt
='update
mengzhuDB
set
PropertyXml.modify(''replace
value
of
(/a/b/b1/text())[1]
with
"'+CONVERT(varchar(10),@a)+'"'')
where
Id=''唯一标识'''
<a>
<b>
<b1>60</b1>
</b>
</a>
print
@sqltxt
exec
(@sqltxt)
‘肆’ 使用EF时,涉及到数据库分库,分表该怎么处理
如果你的数据库自动分的,那么任何客户端驱动都没有必要去管它。如果是手工分的,那么不就是访问不同的库、不同的表嘛。还是要搞清楚前一个问题:你怎样分。这个不清楚,就等于是在给自己“下套”了,在不知道分库分表的具体含义时来问这个时髦概念如何用EF来实现,无的放矢了。
‘伍’ EF框架的优点是什么
EF框架的优点如下:
1、应用程序可以通过更加以应用程序为中心的概念性模型(包括具有继承性、复杂成员和关系的类型)来工作。
2、应用程序不再对特定的数据引擎或存储架构具有硬编码依赖性。可以在不更改应用程序代码的情况下更改概念性模型与特定于存储的架构之间的映射。
3、开发人员可以使用可映射到各种存储架构(可能在不同的数据库管理系统中实现)的一致的应用程序对象模型。
4、多个概念性模型可以映射到同一个存储架构。语言集成查询支持可为查询提供针对概念性模型的编译时语法验证。
EF框架可以理解成微软的一个ORM产品,用于支持开发人员通过对概念性应用程序模型编程来创建数据访问应用程序,目标是降低面向数据的应用程序所需的代码量并减轻维护工作。
(5)ef支持的数据库扩展阅读:
EF框架的缺点:
非SQL Server数据库且无该数据库的DataProvider。
高性能要求。在进行一些复杂查询的情况下,EF的性能表现不太好,而开发人员又无法控制SQL语句的生成
高安全性要求。有时候DB用户仅仅具有EXEC的权限,而EF自动生成的类又不好用,还是需要自己来写。
EF框架常见的模型:
带有有效载荷的多对多关系建模
在带有有效栽花的多对多关系数据库中 ,关系表除了主键外 ,还有其他数据字段。在这种关系中 ,直接把表映射到实体模型中 ,两实体表自动创建对应的实体类型 ,而关系表也被映射成为一实体类型 ,在此实体类型中除了原有属性名 ,还有对应两实体表的导航属性 ,可分别通过 1 对多关系进行对象导航。
自引用关系建模
对于分类表之类的自引用表 ,把表映射成为实体类型后 ,其中将包含两个导航属性 分别对应父、子对象 ,其中父对象为 1 端 ,多端为子对象集合 ,因此分别把 1 端改名为父端名称如Parent Category,多端改名为子对象集合名称如 Sub Categories。由此两导航属性可方便地访问到对应对象。
‘陆’ ef 来自数据库的code frist 修改数据库时怎么更新
ef 来自数据库的code frist 修改数据库时怎么更新
选择开始菜单中→程序→【Management SQL Server 2008】→【SQL Server Management Studio】命令,打开【SQL Server Management Studio】窗口,并使用Windows或 SQL Server身份验证建立连接。
在【对象资源管理器】窗口中展开服务器,然后选择【数据库】节点
右键单击【数据库】节点,从弹出来的快捷菜单中选择【新建数据库】命令。