Entity Framework学习笔记——edmx文件

简介: 上文简单介绍了一下Entity FrameWork,这里说一下EF的核心——edmx文件。 在VisualStudio中建立edmx文件(此例环境为VisualStudio2012)

          上文简单介绍了一下Entity FrameWork,这里说一下EF的核心——edmx文件。


          在VisualStudio中建立edmx文件(此例环境为VisualStudio2012)


          1、新建—ADO.NET实体数据模型:


42.png

      2、选择数据模型时,因为我之前已经在数据库中建立好表了,所以我们这里先选择从数据库生成(即DB First),如果选择空模型,就可以在没有建立数据库的情况下,通过先建立实体模型来生成实体类和数据库表。

43.png


       3、选择数据库连接:

44.png


        4、选择或设置好连接的服务器、验证信息、数据库名:


45.png


        5、注意因为连接字符串将会保存到配置文件中,所以在这里要选择【是,在连接字符串中包括敏感数据】:


46.png


           6、选择我们想要生成实体的表:


47.png


         7、一切都完成后,如下图,edmx就已经根据我们所选的数据库表生成了相应的实体,同时,在解决方案资源管理器中的T4模板Model.tt下还为自动我们生成了Department和Employee实体类。

48.png


        到此,edmx文件就已经创建完成了。


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


49.png


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


      上文第七步说到,生成edmx模板的同时,跟实体相对应的两个类Employee和Department也生成了,在实体类的父节点,还有一个Model.tt,这就是T4模板,看了下面这一段T4模板中的代码,就会理解,其实这两个实体类是T4模板根据edmx配置文件生成的。(用VisualStudio查看T4模板时代码会很混乱,因此可以安装一个T4 Editor的插件再进行T4模板代码的学习,插件下载地址:点击跳转)


<#@ include file="EF.Utility.CS.ttinclude"#><#@ 
 output extension=".cs"#><#
const string inputFile = @"Model.edmx";
var textTransform = DynamicTextTransformation.Create(this);
var code = new CodeGenerationTools(this);
var ef = new MetadataTools(this);
var typeMapper = new TypeMapper(code, ef, textTransform.Errors);
var fileManager = EntityFrameworkTemplateFileManager.Create(this);
var itemCollection = new EdmMetadataLoader(textTransform.Host, textTransform.Errors).CreateEdmItemCollection(inputFile);
var codeStringGenerator = new CodeStringGenerator(code, typeMapper, ef);
if (!typeMapper.VerifyCaseInsensitiveTypeUniqueness(typeMapper.GetAllGlobalItems(itemCollection), inputFile))
{
    return string.Empty;
}
WriteHeader(codeStringGenerator, fileManager);
foreach (var entity in typeMapper.GetItemsToGenerate<EntityType>(itemCollection))
{
    fileManager.StartNewFile(entity.Name + ".cs");
    BeginNamespace(code);
#>


        可能是今天说了一天英语的缘故,困得眼睛都睁不开了。Good Night!

相关文章
|
存储 开发框架 .NET
Entity Framework基础01
Entity Framework基础01
209 0
Entity Framework基础01
|
SQL 数据库 C++
Entity Framework初体验
Entity Framework初体验
193 0
Entity Framework初体验
|
SQL 开发框架 Oracle
Entity Framework简介
Entity Framework简介
204 0
|
存储 开发框架 数据可视化
Entity Framework Core 简介
Entity Framework Core 简介
221 0
|
索引
Entity Framework 小知识(四)
Entity Framework 小知识(四)
147 0
|
数据库
Entity Framework 小知识(五)
Entity Framework 小知识(五)
146 0
|
数据库 数据库管理
Entity Framework 小知识(一)
Entity Framework 小知识(一)
141 0
|
SQL 数据库
Entity Framework 小知识(二)
Entity Framework 小知识(二)
186 0
|
数据库
Entity Framework 小知识(三)
Entity Framework 小知识(三)
158 0
|
SQL .NET 数据库
Entity Framework Core 2.0 入门
该文章比较基础, 不多说废话了, 直接切入正题. 该文分以下几点: 创建Model和数据库 使用Model与数据库交互 查询和保存关联数据 EF Core支持情况 EF Core的数据库Providers: 此外还即将支持CosmosDB和 Oracle.
1691 0