连接到现有数据库

要在 Entity Framework 中实现最简单的任务 - 要连接到本地 MSSQL 实例上的现有数据库 ExampleDatabase,你必须仅实现两个类。

首先是实体类,它将映射到我们的数据库表 dbo.People

    class Person
    {
        public int PersonId { get; set; }
        public string FirstName { get; set; }
    }

该类将使用 Entity Framework 的约定并映射到表 dbo.People,该表预计具有主键 PersonIdvarchar(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>