连接到现有数据库
要在 Entity Framework 中实现最简单的任务 - 要连接到本地 MSSQL 实例上的现有数据库 ExampleDatabase
,你必须仅实现两个类。
首先是实体类,它将映射到我们的数据库表 dbo.People
。
class Person
{
public int PersonId { get; set; }
public string FirstName { get; set; }
}
该类将使用 Entity Framework 的约定并映射到表 dbo.People
,该表预计具有主键 PersonId
和 varchar(max)
属性 FirstName
。
第二个是派生自 System.Data.Entity.DbContext
的上下文类,它将在运行时管理实体对象,从数据库中篡改它们,处理并发并将它们保存回数据库。
class Context : DbContext
{
public Context(string connectionString) : base(connectionString)
{
Database.SetInitializer<Context>(null);
}
public DbSet<Person> People { get; set; }
}
请注意,在我们的上下文的构造函数中,我们需要将数据库初始化器设置为 null - 我们不希望 Entity Framework 创建数据库,我们只想访问它。
现在你可以操作该表中的数据,例如,从控制台应用程序更改数据库中第一个人的 FirstName
,如下所示:
class Program
{
static void Main(string[] args)
{
using (var ctx = new Context("DbConnectionString"))
{
var firstPerson = ctx.People.FirstOrDefault();
if (firstPerson != null) {
firstPerson.FirstName = "John";
ctx.SaveChanges();
}
}
}
}
在上面的代码中,我们使用参数 DbConnectionString
创建了 Context 的实例。这必须在我们的 app.config
文件中指定,如下所示:
<connectionStrings>
<add name="DbConnectionString"
connectionString="Data Source=.;Initial Catalog=ExampleDatabase;Integrated Security=True"
providerName="System.Data.SqlClient"/>
</connectionStrings>