|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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举行以下界说:
- 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:
- 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:
- 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仍会是最多客户选用的脚本语言,并会在未来几年继续领跑。 |
|