EF之Model First模型优先

来源:互联网 发布:yy辅助软件 编辑:程序博客网 时间:2024/05/22 05:29

1、前言

Model First顾名思义,先有实体模型,后有数据库,在本例中我们创建一个RightSystemDb的数据库,包含三张表,用户表、角色表、角色用户表。

2、Model First实战示例

首先打开VS2013创建一个控制台应用程序,命名为MyModelFirstDemo,创建完成以后,如下图:
这里写图片描述
选中解决方案中的项目名称,点击右键,选择“新建项”,如下图:
这里写图片描述
选中”ADO.NET实体数据模型”,命名为MyModelFirst,然后点击添加,如下图:
这里写图片描述
选择”空EF设计器模型”,点击完成,如下图:
这里写图片描述
在模型设计视图中,添加新实体,如下图:
这里写图片描述
添加TUsers实体,如下图:
这里写图片描述
点击确定,如下图:
这里写图片描述
选中属性,点击右键,选择”新增->标量属性”,如下图:
这里写图片描述
这里写图片描述
依次添加标量属性Password与Date,同时创建实体TRoles与TUsersRoles,创建完以后,如下图:
这里写图片描述
接下来我们创建他们之间的管理,TUsers与TUsersRoles是一对多的管理,TRoles与TUsersRoles也是一对多的关系,选中TUsers,点击右键,选择”新增->关联”,如下图:
这里写图片描述
选择好合适的关系,如下图:
这里写图片描述
设置好以后,点击确定,如下图:
这里写图片描述
然后设置TRoles与TUsersRoles的关系,设置好以后,如下图:
这里写图片描述
然后依据模型生成数据库,我们先在数据库中创建一个名称为RightSystemDb的空白数据库,在模型设计视图空白处选择“根据模型生成到数据库…”:
这里写图片描述
如下图。
这里写图片描述
点击”新建连接”,如下图,设置好以后,点击确定
这里写图片描述
这里写图片描述
点击下一步,选择实体框架5.0。如下图:
这里写图片描述
点击下一步,显示“生产数据库”向导,如下图:
这里写图片描述
点击完成,如下图:
这里写图片描述
可以查看创建数据库的SQL预计,在空白处右键点击,选择“生产”,创建数据库表完成,
这里写图片描述

接下来就是对数据的增删改查了,代码如下:

 class Program    {        static void Main(string[] args)        {            MyModelFirstContainer modelfirstContext = new MyModelFirstContainer();            TUsers user = new TUsers();            user.Account = "admin";            user.Password = "111111";            user.CreateDate = DateTime.Now;            modelfirstContext.TUsersSet.Attach(user);            modelfirstContext.Entry(user).State = System.Data.EntityState.Added;            modelfirstContext.SaveChanges();            //LINQ查询            var userlist = from u in modelfirstContext.TUsersSet                           select u;            foreach(var u in userlist){                Console.WriteLine(string.Format("账号:{0} 密码:{1}", u.Account, u.Password));            }            //Lambda            var ulist = modelfirstContext.TUsersSet.Where<TUsers>(u => u.Id > 0).ToList();            foreach(var u in ulist)            {                Console.WriteLine(string.Format("账号:{0} 密码:{1}", u.Account, u.Password));            }            //一直使用Lambda查询,至今没有明白为什么有了LINQ还要有lambda,难道仅仅是让大家多一种写法吗,他们之间的区别是什么,仅仅是写法不同吗            //谁知道的话可以留个言,告诉我一下        }    }
原创粉丝点击