Entity Framework DbContext

Начал разбираться с 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».
Если я правильно понял, проблема в контекстах. Но что я делаю не так?
А если мне надо будет обратиться к моей бд из разных сборок? Я же не могу определить сразу в одном контексте все классы и таблицы, это в принципе невозможно для распределенного проекта.
  • Вопрос задан
  • 9505 просмотров
Решения вопроса 1
@Gwynbleidd
Попробуйте вызвать
Database.SetInitializer(null);
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
SychevIgor
@SychevIgor
Вы шутите? Зачем вам 2 контекста… сделайте 1 контекст с 2dbset… в одном контексте может быть сколько угодно сетов…
Ответ написан
Комментировать
Sellec
@Sellec Автор вопроса
Кодер
И как прикажете работать с этим контекстом в модульном приложении? Если у меня, положим, 3 разных сборки-плагина, каждая обращается к своей таблице в бд, и как это реализовать с одним контекстом?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы