仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 968|回复: 10
打印 上一主题 下一主题

[学习教程] ASP.NET网页编程之Entity Framework 理论系列 ―― 弄好干系 - 两情相悦(双向一对一,one-to-one)- 续 ...

[复制链接]
金色的骷髅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:16:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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


注:BlogUser类中短少BlogID属性,BlogUser表中短少BlogID字段。
看看真实的两情相悦:


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

  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);
复制代码


运转测试,看看是不是真的两情相悦了:

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

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 08:48

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表