Model First(模型优先)

来源:互联网 发布:宁波ai人工智能卖场 编辑:程序博客网 时间:2024/05/17 17:59

必备条件

要完成本项目你需要安装vs2010或者vs2012,如果你安装的是vs2010,那么,还要安装nuget,一个vs的包管理工具插件

1.建立应用程序

下面我们将建立一个控制台应用程序来说明database first的使用问题
.打开vs
.菜单 文件->新建->项目
.在打开的窗口中,左侧选择window,右侧选择console application(控制台应用程序)
.项目名称 ModelFirstSample 
.单击确定

2.建立数据模型

下面我们将要用ef设计器,来制作data model
.打开vs,项目->添加新项
.左侧选择数据,右侧选择数据实体模型
.填入BloggingModel 作为名字,确定
.打开的窗口中,选择空模型,结束,如下图


接着ef会自动用设计器打开空的data model,现在让我们为data modle添加一些实体和属性吧
.在设计器上右键,属性
.在属性窗口中,把entity container name 换成 BloggingContext
.在设计器右键,添加新项->实体
.实体名称 Blog 实体集合 Blogs 属性名称 BlogId,确定,如下图

.继续上面的步骤,添加Name和Url属性
.添加完Url属性后,在其上右键,属性,把bullable设成true
.继续上面的步骤,添加Post实体,主属性为PostId
.接着添加Tile和Content属性
现在我们已经有了两个实体,是时间建立他们之间的联系啦
.在设计器上右键添加关联
.在弹出框中,填写如下图


现在已经建立了连个实体,也添加了它们见得关联,data model如下

如果你用的是vs2010,那么你需要提前做以下几步
首先,我们需要用nuget更新安装的ef版本
.菜单,项目->管理nuget程序包(你需要提前安装nuget)
.选择在线标签
.选择entityframework包
.单击安装
接着,为了让ef自动生成dbcontext api,我们需要安装下面的包
.在一个data model的设计器上右键,添加代码生成项
.选择在线模板,搜索DbContext
.选择EF 5.x DbContext Generator for C# ,填入BloggingModel 作为名称,添加,如下图

3.生成数据库

我们只需在配置一下,ef便可以更具我们建立的data model 映射出database中的表
我们要使用的数据库服务依赖于你安装的vs版本
.如果你安装的是vs2010,我们将要建立的数据库是基于sql express的(安装vs2010完整版,会安装sql express)
.若果你安装的是vs2012,我们将要建立的数据库是基于localdb的(安装vs2012完整吧,会安装)
.关于localdb的详细信息,参考这里下面的地址
LocalDB:微软的新生代轻量级数据库
SQL Server 2012 LocalDB 管理之旅
SQL Server 2012 Express LocalDB
下面让我们来生成数据库吧!
.在设计器上右键,选择从模型生成数据库
.建立新的连接,填写下图

.单击确定,会询问你时候建立新的数据库,选择是
.单击下一步,ef设计器将会建立数据库模式的脚本
.当脚本生成后,单击结束,脚本将会自动添加到你的项目中,并且会自动打开
.在脚本上右键,执行,将会根据你的配置和data model建立数据库

4.使用ef读写数据

通过上面的操作,我们已经有了我们自己的数据库额和data model了,接下来我们要利用data model来存储数据,下面的截屏是基于vs2012的,如果你用的是,vs2010,那么BloggingModel.tt 和 BloggingModel.Context.tt文件不是在.edmx文件下面,而是直接位于项目下面的

为了专注于ef本身,我们直接在main函数中来实现数据存储,在main函数中,我们首先生成一个context,然后利用它向数据库中插入一个新的blog,然后,用linq从数据库中查出所有的blogs
class Program 

    static void Main(string[] args) 
    { 
        using (var db = new BloggingContext()) 
        { 
            // Create and save a new Blog 
            Console.Write("Enter a name for a new Blog: "); 
            var name = Console.ReadLine(); 
 
            var blog = new Blog { Name = name }; 
            db.Blogs.Add(blog); 
            db.SaveChanges(); 
 
            // Display all Blogs from the database 
            var query = from b in db.Blogs 
                        orderby b.Name 
                        select b; 
 
            Console.WriteLine("All blogs in the database:"); 
            foreach (var item in query) 
            { 
                Console.WriteLine(item.Name); 
            } 
 
            Console.WriteLine("Press any key to exit..."); 
            Console.ReadKey(); 
        } 
    } 
}
接下来,运行程序,如下图

5.处理数据模型改变的情况

当我们对data model结构改变时,我们需要把这种改变映射到数据库
首先让我们对我们的data model做一些改变吧,我们将要添加一个User实体,并添加一个主属性username为string类型,如下图

.在username属性上右键,选择属性,把maxlength设置成50
.再添加一个DisplayName属性
现在data model已经做了改变,接着需要更新database了
.用ef设计器打开已有的model,右键从模型更新数据库,将打开更新向导
.在更新向导中,选择实体,结束
.如果出现警告,选择是即可,
.接着会自动生成更新数据库的sql脚本,并且会自动打开,在脚本上右键,执行,更新完成

总结

本章节,我们共做了这么几件事,首先我们建立了data model,然后用新建的model映射出数据库,后来利用data model来存储数据,最后,我们对model做了更新,并为数据库同步了这种更新

0 0
原创粉丝点击