EF学习和使用(二)ModelFirst

ModelFirst我们称之为“模型优先”,这里的模型指的是“ADO.NET Entity Framework Data Model”,使用ModelFirst的前提是,应用程序还没有创建相应的数据库,咱们可以用Visual Studio通过设计系统相关的数据模型来生成数据库结构。当然和DataBaseFirst的区别也是显而易见,可以说是DataBaseFirst的逆向工程。

下面咱们来看看ModelFirst的实例。


第一步


首先创建一个控制台应用程序,右键添加新建项,选择“ADO.NET 实体数据模型”,名称输入ModelTest,接着选择空EF设计器模型:

EF学习和使用(二)ModelFirst_第1张图片


第二步


在模型设计视图中,右键添加一个新实体:

EF学习和使用(二)ModelFirst_第2张图片

并且给实体添加几个标量属性:“Name”“Sex”“Password”;同样的方式添加第二个实体“OrderDetail”,并添加“LoginTime”和“LogoutTime”属性:

EF学习和使用(二)ModelFirst_第3张图片


第三步


接下来我们添加二者之间的关系,“User”和“LoginLog”是一对多的关系,右键添加“关联”

EF学习和使用(二)ModelFirst_第4张图片

添加过关系后,User实体可以通过导航属性LoginLog,直接访问到LoginLog实体,反之亦然:

EF学习和使用(二)ModelFirst_第5张图片


第四步


到目前为止Model First中的Model已经创建结束,下面就需要生成到数据库了,在模型设计视图空白处右键选择“根据模型生成数据库…”
选择数据库连接,点击下一步,你将会看到生成的sql语句:

EF学习和使用(二)ModelFirst_第6张图片


第五步


点击完成,此时生成了数据库上下文和实体类,并且会打开建表的脚本
然后右键选择执行即可。执行完毕后,查看数据库是否生成了相应的表,并且添加几条数据。

EF学习和使用(二)ModelFirst_第7张图片


然后用控制台进行测试:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EFModelFirst
{
    class Program
    {
        static void Main(string[] args)
        {
            //实例化数据库上下文
            ModelTestContainer dbcontext = new ModelTestContainer();

            //使用Lambda表达式查询数据
            var userList = dbcontext.UserSet.Where(o => o.Name != "").ToList();

            //打印查询结果  
            if (userList.Any())
            {
                foreach (var userEntity in userList)
                {
                    Console.WriteLine(userEntity.Name + "----" + userEntity.Sex);
                }
            }

            Console.Read();

        }
    }
}


EF学习和使用(二)ModelFirst_第8张图片



注意:当我们的实体需要改变时,只需要在模型设计视图修改保存模型,此时实体类就会相应改变,然后选择“从模型生成到数据库”重新执行生成的脚本即可将变化同步到数据库。

你可能感兴趣的:(EF学习和使用(二)ModelFirst)