您好,登录后才能下订单哦!
这篇文章主要讲解了“ADO.NET Entity Framework的常见问题有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ADO.NET Entity Framework的常见问题有哪些”吧!
ADO.NET Entity有很多值得学习的地方,这里我们主要介绍ADO.NET Entity,包括介绍ADO.NET Entity等方面。看看下图,解决方案里包括两个Project:EFDemo.Console 和 EFDemo.Models 。这里我把EDM都放在 EFDemo.Models Class Library里。在 EFDemo.Models Class Library 中添加一个"ADO.NET Entity Data Model" 项,名为"UserModel"。 通过向导配置连接等操作后就会创建一个EDM。EDM包括三个文件(.csdl、.msl 和.ssdl 文件)。
创建完EDM后会在配置文件(这里是App.Config)的
<connectionStrings>
<add name="UserEntities" connectionString="metadata=.\UserModel.csdl|.\UserModel.ssdl|.\UserModel.msl;
provider=System.Data.SqlClient;provider connection string="Data Source=xxxxxx;Initial Catalog=SAASDB;
Persist Security Info=True;User ID=sa;Password=xxx;MultipleActiveResultSets=False"" providerName="System.Data.EntityClient" />
connectionStrings>
注意突出显示在这里指定这三个文件的位置,".\"表示Build后这三个文件会被部署到"Build Output Path"位置。回到例子中,EFDemo.Console Project 引用 EFDemo.Models Project,这样就可以在 EFDemo.Console Project 中使用 UserModel 了,写完代码后,把上面配置文件信息Copy到EFDemo.Console Project 的App.config中, Ctrl + F5 运行,发现出现下面错误信息:
System.Data.MetadataException: The specified metadata path is not valid. A valid path must be either an existing directory, an existing file with extension '.csdl', '.ssdl', or '.msl', or a URI that identifies an embedded resource.
明显看出是找不到UserModel.csdl、UserModel.ssdl和UserModel.msl这三个文件,到EFDemo.Console的Build Output Path中看确实没有。有一种解决方法是,每次Build完EFDemo.Models Project后,Copy这三个文件到EFDemo.Console Project的bin里,但是这种做法明显不是***的。
可以通过以下的配置来更好的解决这问题。
1.打开UserModel Model的属性面板,设置“Metadata Artifact Processing ” 选项的值为“Embed in Output Assembly ”。表示这三个文件会被嵌入到Assembly里。
2. 打开UserModel.edmx项的属性面板,确认Build Action值为"EntityDeploy"。以上配置完成之后配置文件中的UserEntities节点值自动改为:
<connectionStrings> <add name="UserEntities" connectionString="metadata=res://*/UserModel.csdl|res:
//*/UserModel.ssdl|res://*/UserModel.msl;provider=System.Data.SqlClient;provider connection string="
Data Source=xxxxxx;Initial Catalog=SAASDB;Persist Security Info=True;User ID=sa;Password=xxx;MultipleActiveResultSets=False"
" providerName="System.Data.EntityClient" /> connectionStrings>
注意看突出显示的"metadata=res://*/UserModel.csdl|res: //*/UserModel.ssdl|res://*/UserModel.msl"。"*"表示它会去所有的Aseembly中找这三个被嵌入在 Assembly中的文件。当然如果我们明确知道这三个文件放在EFDemo.Models.dll 这个Assembly中的话,应该指定只在该Assembly中找,而不要浪费时间在所有Assembly中找:
<connectionStrings> <add name="UserEntities" connectionString="metadata=res://EFDemo.Models/UserModel.csdl|res:
//EFDemo.Models/UserModel.ssdl|res://EFDemo.Models/UserModel.msl;provider=System.Data.SqlClient;provider connection
string="Data Source=xxxxxx;Initial Catalog=SAASDB;Persist Security Info=True;User ID=sa;Password=xxx;
MultipleActiveResultSets=False"" providerName="System.Data.EntityClient" /> connectionStrings>
把这些配置信息更新到EFDemo.Console Project 的App.config中,Ctrl + F5, 运行正常。
感谢各位的阅读,以上就是“ADO.NET Entity Framework的常见问题有哪些”的内容了,经过本文的学习后,相信大家对ADO.NET Entity Framework的常见问题有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。