仓酷云

标题: ASP.NET网页编程之Entity Framework 理论系列 ―― 弄好干系 - 两情相悦(双向一对一,one-to-one)- 续 ... [打印本页]

作者: 金色的骷髅    时间: 2015-1-18 11:16
标题: ASP.NET网页编程之Entity Framework 理论系列 ―― 弄好干系 - 两情相悦(双向一对一,one-to-one)- 续 ...
2003年中微软发布最新版本的ASP.netWebMatrix,对于我们喜欢用Asp.net来编程的朋友实在是个好消息,我也实实在在的将Asp.net更深入的研究了一下,以方便我以后更好的运用它,同时我也讲讲使用它的感受。在上篇文章中,我们经由过程WithRequiredDependent或WithRequiredPrincipal完成了“双向一对一”干系,可是EntityFramework天生的SQL语句很糟。
在上篇文章公布一个多小时以后,我们找到懂得决之道。这就是写博客带来的优点,逼着你静下心来深切思索。
成绩的缘故原由在于我们向EntityFramework传送了分歧道理的“一对一”干系信息,把EntityFramework弄得蒙头转向。BlogSite中有UserID,BlogUser中却没有BlogID,这是一个不屈等的“一对一”。“两情相悦”原本就是互相的、同等的,不存在谁依附谁、谁主宰谁。汉子心中有恋爱暗码,女工资甚么不克不及有?汉子自动寻求女人,女工资甚么只能主动挨追?两情相悦是两颗心的交互,谁先感到到,谁就自动些。
我们先回忆一下之前不屈等的两情相悦(一对一干系):
ASP.NET网页编程之Entity Framework 理论系列 ―― 弄好干系 - 两情相悦(双向一对一,one-to-one)- 续 ...
登录/注册后可看大图

ASP.NET网页编程之Entity Framework 理论系列 ―― 弄好干系 - 两情相悦(双向一对一,one-to-one)- 续 ...
登录/注册后可看大图

注:BlogUser类中短少BlogID属性,BlogUser表中短少BlogID字段。
看看真实的两情相悦:
ASP.NET网页编程之Entity Framework 理论系列 ―― 弄好干系 - 两情相悦(双向一对一,one-to-one)- 续 ...
登录/注册后可看大图

ASP.NET网页编程之Entity Framework 理论系列 ―― 弄好干系 - 两情相悦(双向一对一,one-to-one)- 续 ...
登录/注册后可看大图

注:BlogUser类增添了BlogID属性,BlogUser表中增添了BlogID字段,其他都没动。
然后在OnModelCreating中经由过程FluentAPI举行以下界说:

ASP.NET网页编程之Entity Framework 理论系列 ―― 弄好干系 - 两情相悦(双向一对一,one-to-one)- 续 ...
登录/注册后可看大图
  1. modelBuilder.Entity<BlogSite>().HasRequired(b=>b.BlogUser).WithMany().HasForeignKey(b=>b.UserID);modelBuilder.Entity<BlogUser>().HasRequired(u=>u.BlogSite).WithMany().HasForeignKey(u=>u.BlogID);
复制代码


运转测试,看看是不是真的两情相悦了:
ASP.NET网页编程之Entity Framework 理论系列 ―― 弄好干系 - 两情相悦(双向一对一,one-to-one)- 续 ...
登录/注册后可看大图

测试经由过程!
接着,我们要看一看是不是是完善的“两情相悦”。翻开ServerServerProfiler,揭开“两情”的真理:
猎取一个BlogSite列表时实行的SQL:

  1. SELECT[Extent1].[BlogID]AS[BlogID],[Extent1].[BlogApp]AS[BlogApp],[Extent1].[IsActive]AS[IsActive],[Extent1].[UserID]AS[UserID],[Extent2].[UserID]AS[UserID1],[Extent2].[Author]AS[Author],[Extent2].[BlogID]AS[BlogID1]FROM[dbo].[BlogSite]AS[Extent1]INNERJOIN[dbo].[BlogUser]AS[Extent2]ON[Extent1].[UserID]=[Extent2].[UserID]WHERE1=[Extent1].[IsActive]
复制代码


取一个BlogUser列表时实行的SQL:

  1. SELECT[Extent1].[BlogID]AS[BlogID],[Extent1].[UserID]AS[UserID],[Extent1].[Author]AS[Author],[Extent2].[BlogID]AS[BlogID1],[Extent2].[BlogApp]AS[BlogApp],[Extent2].[IsActive]AS[IsActive],[Extent2].[UserID]AS[UserID1]FROM[dbo].[BlogUser]AS[Extent1]INNERJOIN[dbo].[BlogSite]AS[Extent2]ON[Extent1].[BlogID]=[Extent2].[BlogID]
复制代码


这才是完善的两情相悦!这才是“双向一对一”干系的完善完成!
在经过全球个人PC市场占有90%的微软对asp.net不断优化与整合后,asp.net与微软自身平台的动用上更加的高效,加上asp.net在应用上非常容易上手,相信asp.net仍会是最多客户选用的脚本语言,并会在未来几年继续领跑。
作者: 飘灵儿    时间: 2015-1-20 18:57
ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。
作者: 蒙在股里    时间: 2015-1-24 15:35
它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
作者: 莫相离    时间: 2015-1-25 18:26
微软又推出ASP.NET。这不是ASP的简单升级,而是全新一代的动态网页实现系统,用于一台WEB服务器建立强大的应用程序。是微软发展的新体系结构.NET的一部分,是ASP和.NET技术的结合。
作者: 若相依    时间: 2015-2-3 12:48
逐步缩小出错代码段的范围,最终确定错误代码的位置。
作者: 活着的死人    时间: 2015-2-4 16:18
在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗?
作者: 再见西城    时间: 2015-2-7 17:57
使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。
作者: 第二个灵魂    时间: 2015-3-4 00:54
主流网站开发语言之PHPHP的全名非常有趣,它是一个巢状的缩写名称——“PHP:HypertextPreprocessor”,打开缩写还是缩写。PHP是一种HTML内嵌式的语言(就像上面讲的ASP那样)。而PHP独特的语法混合了C,Java,Perl以及PHP式的新语法。它可以比CGI或者Perl更快速地执行动态网页。
作者: 金色的骷髅    时间: 2015-3-7 06:28
业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
作者: 愤怒的大鸟    时间: 2015-3-14 12:38
ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码。
作者: 谁可相欹    时间: 2015-3-21 07:49
主流网站开发语言之PHPHP的全名非常有趣,它是一个巢状的缩写名称——“PHP:HypertextPreprocessor”,打开缩写还是缩写。PHP是一种HTML内嵌式的语言(就像上面讲的ASP那样)。而PHP独特的语法混合了C,Java,Perl以及PHP式的新语法。它可以比CGI或者Perl更快速地执行动态网页。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2