EF之Model First模型优先

1、前言

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

2、Model First实战示例

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

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

 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(u => u.Id > 0).ToList();
            foreach(var u in ulist)
            {
                Console.WriteLine(string.Format("账号:{0} 密码:{1}", u.Account, u.Password));
            }
            //一直使用Lambda查询,至今没有明白为什么有了LINQ还要有lambda,难道仅仅是让大家多一种写法吗,他们之间的区别是什么,仅仅是写法不同吗
            //谁知道的话可以留个言,告诉我一下

        }
    }

你可能感兴趣的:(c#,ASP.NET,MVC,Entity,FrameWork)