陪你听风

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模型

喜欢的朋友可以点赞加关注哦。


关于TNBLOG
TNBLOG,技术分享。技术交流:群号677373950
ICP备案 :渝ICP备18016597号-1
App store Android
精彩评论
{{item.replyName}}
{{item.content}}
{{item.time}}
{{subpj.replyName}}
@{{subpj.beReplyName}}{{subpj.content}}
{{subpj.time}}
猜你喜欢