惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Privacy & Cybersecurity Law Blog
Vercel News
Vercel News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
N
Netflix TechBlog - Medium
罗磊的独立博客
F
Fortinet All Blogs
T
Threatpost
Y
Y Combinator Blog
博客园_首页
美团技术团队
Security Latest
Security Latest
博客园 - 三生石上(FineUI控件)
T
Tailwind CSS Blog
V
V2EX - 技术
The Cloudflare Blog
L
LINUX DO - 热门话题
博客园 - 司徒正美
Jina AI
Jina AI
P
Proofpoint News Feed
宝玉的分享
宝玉的分享
C
CXSECURITY Database RSS Feed - CXSecurity.com
C
Cybersecurity and Infrastructure Security Agency CISA
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
WordPress大学
WordPress大学
The Hacker News
The Hacker News
P
Privacy International News Feed
T
The Exploit Database - CXSecurity.com
Scott Helme
Scott Helme
有赞技术团队
有赞技术团队
V
V2EX
Stack Overflow Blog
Stack Overflow Blog
M
MIT News - Artificial intelligence
Latest news
Latest news
NISL@THU
NISL@THU
Google DeepMind News
Google DeepMind News
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Cisco Blogs
雷峰网
雷峰网
Application and Cybersecurity Blog
Application and Cybersecurity Blog
B
Blog RSS Feed
W
WeLiveSecurity
D
DataBreaches.Net
G
Google Developers Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
G
GRAHAM CLULEY
Spread Privacy
Spread Privacy
Know Your Adversary
Know Your Adversary
TaoSecurity Blog
TaoSecurity Blog
S
Securelist
Help Net Security
Help Net Security

博客园 - Magic.Z

几种可能使 Windows 7 睡眠后自动唤醒的原因 IIS 7.5 下载文件遇到 404.3 试用 Entity Framework Power Tools CTP1 通过 WebBrowser 获取网页截图 WPF 客户端上传文件到 ASP.NET MVC 网站 开启 IE9 导航声音 WPF 实现屏幕文字提示 - Magic.Z - 博客园 AJAX 网页保留浏览器前进后退等功能 赠送 MSDN 订阅激活卡 在 ASP.NET WebForm 中使用 Route 在 ASP.NET MVC 中创建自定义 HtmlHelper 注意防范ASP.NET中可能导致信息泄漏的漏洞 在 ASP.NET MVC Web 应用程序中输出 RSS Feeds 用 Windows Media Center 浏览互联网视频 WebMatrix 简介 - Magic.Z 打印网页中的 GridView - Magic.Z ASP.NET 网站后台任务 - Magic.Z Visual Studio 2010 中的 MSDN 帮助文档 - Magic.Z 在 ADO.NET Entity Framework 4 中使用枚举 - Magic.Z
ADO.NET Entity Framework Feature 中的 CodeFirst 创建数据库和实体类
Magic.Z · 2011-01-22 · via 博客园 - Magic.Z

以前在使用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>
 4 public class User
 5 {
 6     /// <summary>
 7     /// ID
 8     /// </summary>
 9     public Guid ID { getset; }
10 
11     /// <summary>
12     /// 名字
13     /// </summary>
14     public string Name { getset; }
15 
16     /// <summary>
17     /// 用户组别
18     /// </summary>
19     public virtual Group Group { getset; }
20 }

用户组实体类

 1 /// <summary>
 2 /// 用户组实体类
 3 /// </summary>
 4 public class Group
 5 {
 6     /// <summary>
 7     /// ID
 8     /// </summary>
 9     public Guid ID { getset; }
10 
11     /// <summary>
12     /// 组名
13     /// </summary>
14     public string Name { getset; }
15 
16     /// <summary>
17     /// 用户集合
18     /// </summary>
19     public virtual ICollection<User> Users { getset; }
20 }

3. 写一个继承自DBContext的类

DataContext

 1 /// <summary>
 2 /// 数据上下文
 3 /// </summary>
 4 public class DataContext : DbContext
 5 {
 6     /// <summary>
 7     /// 用户
 8     /// </summary>
 9     public DbSet<User> Users { getset; }
10 
11     /// <summary>
12     /// 用户组
13     /// </summary>
14     public DbSet<Group> Groups { getset; }
15 }

这里我们还可以重写OnModelCreating方法来对数据库的生成做一些设置,如某些列的最大长度等信息。

4. 检查数据库连接字符串

默认的数据库连接字符串将连接到.\SQLEXPRESS实例,这个是可以修改的。一个修改方法是在DataContext的构造函数中修改。如:

1 /// <summary>
2 /// 构造函数
3 /// </summary>
4 public DataContext()
5     : base("EFCodeFirstStartConnectionString")
6 {
7 }

其中EFCodeFirstStartConnectionString是连接字符串的名字

5. 当你对数据库执行操作时,如果它不存在,就会按照Model的代码来创建一个。也可以显式地用代码来创建。

1 DbContext.Database.CreateIfNotExists();

1 DbContext.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)

本文适用于 ADO.NET Entity Framework Feature CTP5