В ответ на ваш второй вопрос ...
"У меня будет несколько разных контекстов (по одному для каждой основной функциональной области), и я хочу, чтобы они все жили в одной базе данных."
Почему бы не попробовать ...
MyContext.cs
public partial class MyContext : DbContext
{
}
FooContext.cs
partial class MyContext
{
public DbSet<Foo> Foos { get; set; }
}
BarContext.cs
partial class MyContext
{
public DbSet<Bar> Bars { get; set; }
}
Вы получите один контекст и одно соединение, но ваш код разделен на несколько файлов.Надеюсь, это то, что вы пытаетесь достичь.