实体框架代码优先:让我们尝试一下






4.77/5 (29投票s)
EF 代码优先:第一次尝试
引言
你听说过实体框架并且想尝试一下。在这里,你可以找到一个非常简单的例子,说明如何使用代码优先创建一个第一个类和从这个类创建第一个表。
Using the Code
我们将创建一个控制台应用程序,添加一个名为Person
的类,并从此类生成数据库。打开Visual Studio并创建一个控制台应用程序。我将我的命名为EFFirstSample
。现在,你必须允许你的项目使用代码优先。为此,从NuGet包中添加实体框架。打开Visual Studio,转到工具 -> 库包管理器 -> 管理NuGet包
并选择EntityFramework
包。它将所有引用添加到你的项目。

添加完成后,检查项目中的引用。应该出现了EntityFramework
。你还会看到一个新的文件 *package.config*。此文件包含有关已安装NuGet包的所有信息。好的,现在我们可以开始我们的项目了。我们首先添加一个新的类文件,*Person.cs*,并声明四个属性:ID、姓氏、名字和出生日期,如下所示
public class Person
{
public int PersonId { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public DateTime BirthDate { get; set; }
}
现在,我们将创建一个类来管理与数据库的连接:我们的DBContext
。添加一个新的类 *MyContext.cs* 并让它继承自DbContext
类(添加System.Data.Entity
作为using
)
using System.Data.Entity;
namespace EFFirstSample
{
public class MyContext : DbContext
{
public MyContext()
{}
}
}
所以现在,我们将告诉上下文应该在数据库中创建什么。添加以下行
public DbSet<Person> Persons { get; set; }
它允许上下文知道它将包含Person
对象的集合(以及应该创建一个Person
表)。如果我们运行应用程序,什么也不会发生。你可以连接到你的SqlExpress实例进行检查。让我们在我们的Console
中添加一些代码来调用我们的上下文。转到Program
类并像这样修改它
static void Main(string[] args)
{
var person = new Person {FirstName = "Nadege",
LastName = "Deroussen", BirthDate = DateTime.Now};
using (var context = new MyContext())
{
context.Persons.Add(person);
context.SaveChanges();
}
Console.Write("Person saved !");
Console.ReadLine();
}
我们只是创建一个新的Person
对象并将其添加到数据库。现在,运行应用程序并在关闭前检查消息。

现在是检查人员是否已成功创建的时候了。连接到SqlExpress并检查是否创建了新的数据库
在工具栏*服务器资源管理器*中,你应该看到一个数据连接节点。如果工具栏不可见,请转到*视图 -> 服务器资源管理器*
右键单击该节点并选择*添加连接*。将出现一个新窗口。添加你的服务器(如果你使用SQL Express,则为*.\SqlExpress*)并在下拉列表中选择你的数据库。这是我的情况

测试你的连接并使用“确定”按钮进行验证。你现在应该可以看到你的数据库了。

你可以看到一个People
表和一个EdmMetadata
表。第一个表示与你的Person
类对应的表。为什么它被命名为People
?因为命名约定。EF 代码优先使用复数规则,因此我们的DbSet
Persons
被重命名为People
(复数)。右键单击表名并选择**打开表定义**。你应该看到类似这样的内容

你可以看到PersonId
已被创建为主键。这是怎么回事?我们什么也没指定!很简单。代码优先使用命名约定来确定哪个属性应该用作主键。如果你将属性命名为*TableName*Id,代码优先将看到此属性将用于定义主键。非常简单。还有另一种方法可以定义与主键匹配的属性。我们将在以后的文章中介绍。另一个表EdmMetadata
存储一个哈希值,这将允许EF检查模型是否已被修改。
你刚刚使用实体框架代码优先创建了你的第一个简单的应用程序。在以后的文章中,我们将看到如何添加具有外键的多个表。
历史
- 2012年1月:第一篇文章
- 2012年1月:添加了有关如何连接到数据库的说明