EF三种模式解析
电脑版发表于:2019/10/25 12:51
万般皆下品,惟有编程高
我希望你是为我而来
如果我爱你,而你也正巧爱我。你头发乱了时候,我会笑笑地替你拨一拨,然后,手还留恋地在你发上多待几秒。但是,如果我爱你,而你不巧地不爱我。你头发乱了,我只会轻轻地告诉你,你头发乱了喔。这大概是最纯粹的爱情观,如若相爱,便携手到老;如若错过,便护她安好。
EF的三种模式分类:
DBFirst:数据库优先--》数据库生成代码,EF构建模型即可使用
ModelFirst:模型优先(用模型生成数据库)
CodeFirst:代码优先 (此模型相对比较灵活,写的代码较多)根据代码生成数据库
下面说一下ModelFirst模型的使用
1,先创建ADO.NET 实体数据模型
2,构建模型数据表,可以在属性里编辑字段是否为空,长度等-->如图
3,选择表间的外键关系
4,最后一步,从模型生成数据库(里面就是连接数据库,定义库名,So easy喔)就完美啦
由于生成的外键,我们的模型字段里会生成导航属性,如下
public partial class Users { public Users() { this.Sourse = new HashSet<Sourse>(); } public int ID { get; set; } public string UserName { get; set; } public string Number { get; set; } public string Uclass { get; set; } public int ParentId { get; set; } //导航属性 public virtual Parent Parent { get; set; } public virtual ICollection<Sourse> Sourse { get; set; } }
因此我又想,这种模型的方式下,我们有没有特殊的方式在前台显示数据呢?
答案当然有啦.
1,查询两张有外键关联的表
public ActionResult Index() { OAContainer oAContainer = new OAContainer(); //一般联表查询 Parent parent = oAContainer.Parent.Where(a => a.Father == "胡汉之").FirstOrDefault(); List<Users> userList=oAContainer.Users.Where(a=>a.ParentId==parent.ID).ToList(); ViewBag.parent = parent; return View(userList); }
前台显示如下:\\
2,利用导航属性进行三表联查,封装代码如下:
public ActionResult virtualShow() { OAContainer oAContainer = new OAContainer(); //Include("User"):就是left join 的意思 Parent parent = oAContainer.Parent.Include("User").Where(a => a.Father == "胡汉之").FirstOrDefault(); return View(parent); }
前台显示如下:\\
好啦,ModelFirst模型的创建和应用就到这里了,下一篇分享CodeFirst模型
喜欢的朋友可以点赞加关注哦。