如何在实体框架中为不同的数据库连接手动创建DbContext?
发布于 2016-09-03 15:45:25
首先,在App.Config文件中可以有多个命名连接字符串,如下所示:
<connectionStrings>
    <add name="ToDoConnectionString" connectionString="data source=myLocalBox;initial catalog=ToDoDbCodeFirst2;integrated security=True;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
    <add name="StackOverflowEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string="data source=.;initial catalog=StackOverflow;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
  </connectionStrings>现在您可以定义从DbContext类继承的两个不同的自定义类,如下所示:
using System.Data.Entity;
namespace EfDevelopment
{
    public class ToDoCodeFirstDbContext : DbContext
    {
        public ToDoCodeFirstDbContext()
           : base("name=ToDoConnectionString")//connection string for 1st DB
        {
        }
        public DbSet<ToDo> ToDos { get; set; }
    }
    public class ToDoCodeSecondDbContext : DbContext
    {
        public ToDoCodeSecondDbContext()
          : base("name=StackOverflowEntities")//connection string for 2nd DB
        {
        }
        public DbSet<ToDo> ToDos { get; set; }
    }
}现在,在您的主程序中(我已经使用了控制台应用程序),只需根据需要将相应的实体框架(EF)上下文类实例化,即可将它们连接到相应的数据库,如下所示:
class Program
{
        static void Main(string[] args)
        {
              using (var db = new ToDoCodeFirstDbContext())
              {
                  //write your code here for first DB connection
              }
              using (var db = new ToDoCodeSecondDbContext())
             {
                  //write your code here for second DB connection
             }
        }
  }https://stackoverflow.com/questions/39288027
复制相似问题