以前在使用ADO.NET Entity Framework开发时,碰到过一个问题,Model和数据层不能完全分离。之后在ADO.NET Entity Framework 4中又有了ModelFirst模式,现在在ADO.NET Entity Framework Feature中又增加了CodeFirst模式。本文介绍通过Model代码生成数据库及从数据库生成Model代码。
从代码生成数据库
既然是CodeFirst,当然需要Code完成后能自动生成数据库了。
1.添加对EntityFramework和System.Data.Entity的引用。
2.写一个User类和Group类,User和Group是多对一的关系
用户实体类
1///<summary> 2///用户实体类 3///</summary> 4publicclassUser 5{ 6///<summary> 7///ID 8///</summary> 9publicGuidID{get;set;} 10 11///<summary> 12///名字 13///</summary> 14publicstringName{get;set;} 15 16///<summary> 17///用户组别 18///</summary> 19publicvirtualGroupGroup{get;set;} 20}
用户组实体类
1///<summary> 2///用户组实体类 3///</summary> 4publicclassGroup 5{ 6///<summary> 7///ID 8///</summary> 9publicGuidID{get;set;} 10 11///<summary> 12///组名 13///</summary> 14publicstringName{get;set;} 15 16///<summary> 17///用户集合 18///</summary> 19publicvirtualICollection<User>Users{get;set;} 20}
3.写一个继承自DBContext的类
DataContext
1///<summary> 2///数据上下文 3///</summary> 4publicclassDataContext:DbContext 5{ 6///<summary> 7///用户 8///</summary> 9publicDbSet<User>Users{get;set;} 10 11///<summary> 12///用户组 13///</summary> 14publicDbSet<Group>Groups{get;set;} 15}
这里我们还可以重写OnModelCreating方法来对数据库的生成做一些设置,如某些列的最大长度等信息。
4.检查数据库连接字符串
默认的数据库连接字符串将连接到.\SQLEXPRESS实例,这个是可以修改的。一个修改方法是在DataContext的构造函数中修改。如:
1///<summary> 2///构造函数 3///</summary> 4publicDataContext() 5:base("EFCodeFirstStartConnectionString") 6{ 7}
其中EFCodeFirstStartConnectionString是连接字符串的名字
5.当你对数据库执行操作时,如果它不存在,就会按照Model的代码来创建一个。也可以显式地用代码来创建。
1DbContext.Database.CreateIfNotExists();
或
1DbContext.Database.Create();
从数据库生成代码
如果已经有数据库了也不必完全手写Model代码。
1.新建一个ADO.NET Entity Data Model
2.选择Generate from database
3.选择需要生成代码的表
4.右键单击emdx文件并选择Add Code Generation Item
5.在弹出的Add New Item对话框中选择ADO.NET DbContext Generator
6.在Solution Explorer中可以找到模版文件和生成的代码文件
示例下载(Visual Studio 2010)
优质内容筛选与推荐>>
1、搭建R语言服务器RApache2、mass Framework css模块 v43、文件下载4、【Linux】su - user有问题 su user 可用问题5、C# 调用WebApi
长按二维码向我转账
受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。
阅读
好看
已推荐到看一看
你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
取消
分享想法到看一看
确定
最多200字,当前共字
微信扫一扫
关注该公众号