博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Entity Framework 杂碎
阅读量:5024 次
发布时间:2019-06-12

本文共 2468 字,大约阅读时间需要 8 分钟。

Windows-Live-Writer_75eacc89fb20_B51C_Development_approaches_diagram_8c9f576c-ca82-4843-9177-c9fc84ea9bbb

其实看图很简单,database first和model first都是通过 data model创建的edmx文件,只不过model first模块可以自己根据需要创建和修改实体,显得更加灵活.

codefist是一个class代码文件,它可以由一些第三方的软件可视化的创建,也是非常灵活的一种方式,目前被使用也是最广泛的.

2, edmx文件的本质就是一个XML文件,它用于定义概念模型、存储模型和这些模型之间的映射。虽然edmx文件默认情况下以实体设计器的方式打开,还可以右击Model.edmx文件以XML文本编辑器打开,这时就可以看到edmx文件的庐山真面目:

         

        从代码中可以看到,edmx大致由SSDL、CSDL、C-S三部分组成,分别对应着对于数据库实体数据库表与实体之间的映射这三方面的解析,SSDL中有对数据库表、字段等的规定,CSDL中有对实体名、实体属性等的规定,C-S中有对数据库表与实体之间的映射。一句话总结edmx文件,就是用来解析存储模型、概念模型以及这两者之间的映射,其实也还是上文中那张图片的详细表现。

3,

将 EfModel.tt 文件拆分到 Entity 层,EfModel.Edmx、EfModel.Content.tt 保留在 DAL 层。

设置EfModel.edmx的Code Generation Strategy设为None[确保EFModel.edmx不自动产生代码]

参考:http://www.cnblogs.com/fangrobert/archive/2011/08/22/2150048.html

4,

更新没有设置主键的表

 

在默认情况下,EF不能对一个没有主键的表进行更新、插入和删除的动作。用xml方式查看edmx文件,可以在SSDL中可以看到如下xml片断(我定义了一个没有主键的表tb_WithoutKey)。

 

SELECT [tb_WithoutKey].[ID] AS [ID], [tb_WithoutKey].[Name] AS [Name] FROM [dbo].[tb_WithoutKey] AS [tb_WithoutKey]

 

我再加入一个有主键的表进行对比,同样的在SSDL中,可以看到有主键的表的定义如下。

 

 

我们把没有主键的<EntitySet>照着上面这个节点进行更改:删除<DefiningQuery>节点,将store:Schema=”dbo”更改为Schema=”dbo”。这样我们就可以对之前没有设置主键的表进行更新、删除以及插入操作了。

 

无主键的表SSDL定义其实更像是视图,我有一点不明的是store:这个命名空间的作用是什么,为什么只是删除<DefiningQuery>不行,还需要将Schema属性的store命名空间删除才可以。以上都是我还不明白的地方,只是作为一个解决方案,它确实简单可行。

5,

更改Code-First的默认连接

我们知道使用Code-First的时候我们甚至可以不用写连接字符串,但是这个默认的连接只识别本机的SQL Express版数据库,如果你是使用其它数据库甚至就是Sql Server非Express版,都不行。

在不提供任何连接数据库信息的情况下,EF会创建一个默认的DefaultConnectionFactory,这个默认的连接工厂使用的就是SqlConnectionFactory,然后我们可以通过reflector看到它的构造函数如下。

public SqlConnectionFactory(){    this._baseConnectionString = @"Data Source=.\SQLEXPRESS; Integrated Security=True; MultipleActiveResultSets=True"; }

所以说EF默认只能连Sql Express版的数据库。SqlConnectionFactory提供一个构造函数重载,可以指定连接字符串,修改默认的数据库连接,我们可以在配置文件中添加以下节点进行配置。

不过不管怎样,我觉得还是指定好连接字符串来开发比较好,排除各种不可控的因素。

参考:http://www.cnblogs.com/heqichang/archive/2012/10/15/2723906.html

6,ef power tools去直接生成codefirst的模型,去掉 edmx 文件。

Entity Framework Power Tools Beta 4  https://visualstudiogallery.msdn.microsoft.com/72a60b14-1581-4b9b-89f2-846072eff19d

http://www.cnblogs.com/LingzhiSun/archive/2011/05/24/2055761.html

http://www.cnblogs.com/LingzhiSun/archive/2011/04/13/EF41_WokingWithProperties.html

7,

通过Model First的方式+ADO.NET DbContext Generator生成器 实现Code First方式业务(EDMX通过DbContext构造注入其中),到达Hibernate的效果。EDMX相当于Hibernate

对象模型XML映射文件,POCO相当于Hibernate对象模型(virtual实现关联导航加载),DbContext通过泛型构建IRepository数据操作类。

 

转载于:https://www.cnblogs.com/jimcsharp/p/5912057.html

你可能感兴趣的文章
[转]开发商死不降价的10大原因 哪一条最让你惊心
查看>>
设计模式学习笔记(一)
查看>>
转:设备文件、设备文件节点 、设备 、设备驱动 区别
查看>>
bzoj 3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛
查看>>
红酒初识
查看>>
xshell连接虚拟机中的liuux(centOS)的方法及原因
查看>>
php多个数组同键名键值相加合并
查看>>
leetcode 合并区间
查看>>
解决eclipse新建项目看不到src/main/java目录办法
查看>>
λ演算
查看>>
基本数据类型重点作业
查看>>
Socket通信简介
查看>>
IoC和AOP
查看>>
hduoj1025——dp, lis
查看>>
在PowerBI中使用R的限制
查看>>
Photoshop-蒙版
查看>>
读书笔记--C陷阱与缺陷(六)
查看>>
Vulkan Tutorial 05 物理设备与队列簇
查看>>
pycharm运行的两种姿势-去除unittest运行方法
查看>>
将HR中的组织架构导出到visio
查看>>