Начал разбираться с Entity Framework Code First, но чего-то не могу понять.
Создаю проект WinForms Application, добавляю пакет EF 4.3.1, добавляю ссылку на System.Data.Entity. Создаю два класса:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Entity;
namespace WindowsFormsApplication4
{
class TestContext1: DbContext
{
public TestContext1()
: base("Data Source=localhost;Initial Catalog=TestDB;Integrated Security=True")
{
}
public DbSet<TestContext1Class> Classes { get; set; }
}
class TestContext1Class
{
public int Id { get; set; }
public string Name { get; set; }
}
}
и
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Entity;
namespace WindowsFormsApplication4
{
class TestContext2: DbContext
{
public TestContext2()
: base("Data Source=localhost;Initial Catalog=TestDB;Integrated Security=True")
{
}
public DbSet<TestContext2Class> Classes { get; set; }
}
class TestContext2Class
{
public int Id { get; set; }
public string Name { get; set; }
}
}
Инициализирую все это дело так:
private void button1_Click(object sender, EventArgs e)
{
var context1 = new TestContext1();
var context2 = new TestContext2();
context1.Database.Initialize(false);
var list1 = (from p in context1.Classes select p).ToList();
var list2 = (from p in context2.Classes select p).ToList();
}
и на list2 получаю ошибку: «The model backing the 'TestContext2' context has changed since the database was created».
Если я правильно понял, проблема в контекстах. Но что я делаю не так?
А если мне надо будет обратиться к моей бд из разных
сборок? Я же не могу определить сразу в одном контексте все классы и таблицы, это в принципе невозможно для распределенного проекта.