【翻译】EF 4.2 Model & Database First演示
一、创建应用程序
为了使问题简单,我们建立一个基本的控制台应用程序,使用DbContext执行数据访问:
1. 打开Visual Studio 2010
2. File -> New -> Project…
3. 从左侧菜单中选择"Windows",然后选择"Console Application"
4. 输入"ModelFirstSample"作为名字
5. 选择"OK"
二、创建模型
1. 让我们继续,在项目中添加一个Entity Data Model:
2. Project –> Add New Item…
3. 从左侧菜单选择"Data"
4. 从可用项目列表中选择"ADO.NET Entity Data Model"
5. 命名为"PersonModel.edmx"
6. 单击"Add"
本次演示使用Model First,但是如果要映射到一个现有的数据库,那么选择"Generate from database",根据提示操作,然后跳到步骤四。
7. 选择"Empty model"
8. 单击"Finish"
让我们往模型中添加一个Person实体:
9. 在设计器上右击 –> Add –> Entity
10. 命名实体为"Person"
11. 单击"OK"
12. 在Person实体上右击–> Add –> Scalar Property
13. 命名属性为"FullName"
三、创建数据库
现在我们已经定义了模型,接下来我们就可以生成数据库架构存储数据了:
1. 右击 –> Generate Database from Model
2. 单击"New Connection…"
3. 在Select or enter a database name中输入"ModelFirstSample"
4. 在提示创建数据库对话框中选择"是"
5. 单击"Next",然后"Finish"
6. 在生成的脚本上,右击 –> Execute SQL…
7. 指定你的数据库服务器,然后单击"Connect"
四、DbContext代码生成
PersonModel通常派生自ObjectContext,实体类派生自EntityObject,但是我们想使用简化的DbContext API。
使用DbContext,我们需要安装EntityFramework NuGet包:
1. Project –> Add Library Package Reference…
2. 选择"Onlie"选项卡
3. 搜索"EntityFramework"并选择该包
4. 点击"Install"
另一种方法是在Package Manager Console中输入"Install-Package EntityFramework"安装。
现在可以使用DbContext代码生成模板了:
1. 在设计器上右击–> Add Code Generation Item…
2. 在左侧菜单中选择"Online Templates"
3. 搜索"DbContext"
你会注意到有两个项添加到你的项目中:
PersonModel.tt
这个模板为模型中的每个实体生成非常简单的POCO类
PersonModel.Context.tt
这个模板生成一个派生自DbContext的类,用来查询和持久化数据
五、读写数据
是时候访问一些数据了。代码在Program文件中的Main方法中,如下:
class Program { static void Main(string[] args) { using (var db = new PersonModelContainer()) { // Save some data db.PersonSet.Add(new Person { FullName = "Bob" }); db.PersonSet.Add(new Person { FullName = "Ted" }); db.PersonSet.Add(new Person { FullName = "Jane" }); db.SaveChanges(); // Use LINQ to access data var people = from p in db.PersonSet orderby p.FullName select p; Console.WriteLine("All PersonSet:"); foreach (var person in people) { Console.WriteLine("- {0}", person.FullName); } // Change someones name db.PersonSet.First().FullName = "Janet"; db.SaveChanges(); } Console.WriteLine("Press any key to exit..."); Console.ReadKey(); } }
总结
在这个演示中,我们使用DbContext API进行Model First开发。我们创建了一个模型,生成了数据库,交换DbContext代码生成以及保存和查询数据。