Вчера начал работу с EF6 и уже разочарован.
В любом случае, как показывает мое исследование, EF может создать базу данных, если она не существует, а также может создавать таблицы.Итак, я передал строку подключения к своему DbContext
следующим образом:
public CampaignDbContext() : base("Data Source=xx;Initial Catalog=NewTestDb;User ID=xx;Password=xx;")
{ }
Мои модели и весь класс DbContext, скорее всего, здесь неактуальны, поэтому я не добавляю код.В любом случае, мой класс модели называется Campaign
, а внутри класса DbContext я объявил очевидное:
public DbSet<Campaign> Campaigns { get; set; }
//Also added this
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
Database.SetInitializer<CampaignDbContext>(null);
base.OnModelCreating(modelBuilder);
}
Теперь из моего тестового метода, когда я заполняю Campaigns
DbSet и вызываю:
CampaignDbContext.SaveChanges();
Я получил ошибку:
Невозможно открыть базу данных "NewTestDb", запрошенную при входе в систему.Ошибка входа в систему
Еще раз в моей карьере программиста, я в шоке.Те же учетные данные, которые передаются в строке подключения (в классе dbcontext), работают нормально, если в SSMS / примере подключения sql из-за кода, но это не работает здесь.Но когда я создал NewTestDb
вручную из SSMS, соединение прошло успешно.Теперь, когда я вызываю SaveChanges
метод CampaignDbContext
, я получаю:
Неверное имя объекта 'dbo.Campaigns'
Я прошел через тонныТАК сообщения уже и не вижу ничего плохого в моем коде.Может кто-нибудь указать, где я пропускаю / что я делаю не так?
PS Я новичок в EF.