Как создать DbContext вручную в Entity Framework для разных соединений с базой данных?Создание dbконтекста для нескольких серверов Подключения
1
A
ответ
1
Сначала вы можете иметь несколько именованных строк соединения в 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; }
}
}
Теперь внутри ваша основная программа (я использовал консольное приложение) просто создала экземпляр соответствующих классов контекста Entity Framework (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
}
}
}