EF的edmx文件

    

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

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

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

  

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

          

          3、选择数据库连接:

          

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

          

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

          

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

          

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

           

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


        上文说到,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模板代码的学习,插件下载地址:点击跳转

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <#@ include file="EF.Utility.CS.ttinclude"#><#@   
  2.  output extension=".cs"#><#  
  3.   
  4. const string inputFile = @"Model.edmx";  
  5. var textTransform = DynamicTextTransformation.Create(this);  
  6. var code = new CodeGenerationTools(this);  
  7. var ef = new MetadataTools(this);  
  8. var typeMapper = new TypeMapper(code, ef, textTransform.Errors);  
  9. var fileManager = EntityFrameworkTemplateFileManager.Create(this);  
  10. var itemCollection = new EdmMetadataLoader(textTransform.Host, textTransform.Errors).CreateEdmItemCollection(inputFile);  
  11. var codeStringGenerator = new CodeStringGenerator(code, typeMapper, ef);  
  12.   
  13. if (!typeMapper.VerifyCaseInsensitiveTypeUniqueness(typeMapper.GetAllGlobalItems(itemCollection), inputFile))  
  14. {  
  15.     return string.Empty;  
  16. }  
  17.   
  18. WriteHeader(codeStringGenerator, fileManager);  
  19.   
  20. foreach (var entity in typeMapper.GetItemsToGenerate<EntityType>(itemCollection))  
  21. {  
  22.     fileManager.StartNewFile(entity.Name + ".cs");  
  23.     BeginNamespace(code);  
  24. #>  
原文地址:http://blog.csdn.net/huyuyang6688/article/details/41627669
         
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值