ASP.NET网页设计水落石出:为何Entity Framework不克不及举行跨数据库查询(附办理办法)仓酷云 ...
既然话题已经抄起,我打算今晚发篇博文再引导一下舆论方向,使它再火两天,抛砖引玉,而且赵劼先生一直在跟帖,使.NET阵营的我感到万分难得。在上篇漫笔中,我们发明EntityFramework在构建SQL语句时,将ToTable("CNBlogsTex.dbo.blog_PostBody")中的"CNBlogsTex.dbo.blog_PostBody"转换为".",从而形成不克不及举行跨数据库查询。明天上午,我们经由过程Reflector对EntityFramework的代码举行剖析,找出了原形。
原形以下:
1.关于“CNBlogsTex.dbo.blog_PostBody"字符串,EntityFramework对其举行了拆分,拆分为:Schema称号(CNBlogsTex.dbo)与数据库表称号(blog_PostBod)。
这部分是在System.Data.Entity.ModelConfiguration.Utilities.ObjectExtensions的ParseQualifiedTableName()办法中处置的,Reflector出来的代码以下:
publicstaticvoidParseQualifiedTableName(stringqualifiedName,outstringschemaName,outstringtableName){qualifiedName=qualifiedName.Trim();intlength=qualifiedName.LastIndexOf(.);schemaName=null;tableName=qualifiedName;switch(length){case-1:break;case0:throwError.ToTable_InvalidSchemaName(qualifiedName);default:if(length==(tableName.Length-1)){throwError.ToTable_InvalidTableName(qualifiedName);}schemaName=qualifiedName.Substring(0,length);tableName=qualifiedName.Substring(length+1);break;}if(string.IsNullOrWhiteSpace(schemaName)){schemaName=null;}}2.方括号的增加(CNBlogsTex.dbo变成,blog_PostBod变成)是在System.Data.SqlClient.SqlDdlBuilder的AppendIdentifier(stringidentifier)办法中处置的,Reflector出来的代码以下:
privatevoidAppendIdentifier(stringidentifier){this.AppendSql("["+identifier.Replace("]","]]")+"]");}以是,当我们当表名改成"CNBlogsText]..]."。
不但有代码有原形,并且有图有原形:
晓得了原形,今朝只能看原形心叹,能不克不及办理这个成绩仍是未知数...
更新:
killkill的一句复兴让“心叹”酿成了“镇静”,那种程序员独有的,常人享用不到的镇静...
本来要棍骗的不是EntityFramework,并且是SQLServer,用SQLServer的同义词(SYNONYM)能够轻松弄定这个成绩,创立同义词的SQL语句以下:
CREATESYNONYM.FOR..十分感激killkill的匡助!我也不知道,我原来理解的,NET就是C++编程,只是与net网页编程相对,呵呵。以为.ET就是高级C++编程。 使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。 目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案. CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。 那么,ASP.Net有哪些改进呢? 有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。 逐步缩小出错代码段的范围,最终确定错误代码的位置。 asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源 对于中小项目来说.net技术是完全可以胜任,但为什么现在大型公司或网站都选择php或java呢?就是因为微软不够开放,没有提供从硬件到应用服务器再到业务应用的整套解决方案。 ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp)。
页:
[1]