上文简单介绍了一下Entity FrameWork,这里说一下EF的核心——edmx文件。html
在VisualStudio中创建edmx文件(此例环境为VisualStudio2012)mysql
一、新建—ADO.NET实体数据模型:sql
二、选择数据模型时,由于我以前已经在数据库中创建好表了,因此咱们这里先选择从数据库生成(即DB First),若是选择空模型,就能够在没有创建数据库的状况下,经过先创建实体模型来生成实体类和数据库表。数据库
三、选择数据库链接服务器
四、选择或设置好链接的服务器、验证信息、数据库名:app
五、注意由于链接字符串将会保存到配置文件中,因此在这里要选择【是,在链接字符串中包括敏感数据】:编辑器
六、选择咱们想要生成实体的表:学习
七、一切都完成后,以下图,edmx就已经根据咱们所选的数据库表生成了相应的实体,同时,在解决方案资源管理器中的T4模板Model.tt下还为自动咱们生成了Department和Employee实体类。this
到此,edmx文件就已经建立完成了。spa
上文说到,edmx文件的本质就是一个XML文件,它用于定义概念模型、存储模型和这些模型之间的映射。虽然edmx文件默认状况下以实体设计器的方式打开,还能够右击Model.edmx文件以XML文本编辑器打开,这时就能够看到edmx文件的庐山真面目:
从代码中能够看到,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); #>