ModelFirst我们称之为“模型优先”,这里的模型指的是“ADO.NET Entity Framework Data Model”,使用ModelFirst的前提是,应用程序还没有创建相应的数据库,咱们可以用Visual Studio通过设计系统相关的数据模型来生成数据库结构。当然和DataBaseFirst的区别也是显而易见,可以说是DataBaseFirst的逆向工程。
下面咱们来看看ModelFirst的实例。
第一步
首先创建一个控制台应用程序,右键添加新建项,选择“ADO.NET 实体数据模型”,名称输入ModelTest,接着选择空EF设计器模型:
第二步
在模型设计视图中,右键添加一个新实体:
并且给实体添加几个标量属性:“Name”“Sex”“Password”;同样的方式添加第二个实体“OrderDetail”,并添加“LoginTime”和“LogoutTime”属性:
第三步
接下来我们添加二者之间的关系,“User”和“LoginLog”是一对多的关系,右键添加“关联”
添加过关系后,User实体可以通过导航属性LoginLog,直接访问到LoginLog实体,反之亦然:
第四步
到目前为止Model First中的Model已经创建结束,下面就需要生成到数据库了,在模型设计视图空白处右键选择“根据模型生成数据库…”
选择数据库连接,点击下一步,你将会看到生成的sql语句:
第五步
点击完成,此时生成了数据库上下文和实体类,并且会打开建表的脚本
然后右键选择执行即可。执行完毕后,查看数据库是否生成了相应的表,并且添加几条数据。
然后用控制台进行测试:
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();
}
}
}
注意:当我们的实体需要改变时,只需要在模型设计视图修改保存模型,此时实体类就会相应改变,然后选择“从模型生成到数据库”重新执行生成的脚本即可将变化同步到数据库。