2015-09-08 2 views
0

После использования DB сначала для всех предыдущих проектов, я сейчас пытаюсь использовать Code First. Я редактировал строку подключения в моем web.config, чтобы использовать «user id = ...; password = ...», и магия происходит красиво; создается схема БД! Но:EF Code Первое развертывание gremlins

  1. Данные семян, которые я с любовью создал в своем классе Configuration, не вставлены. В моей среде dev, когда я запускаю update-database, данные семян работают нормально.
  2. В первый раз, когда я пытаюсь создать новый объект контекста Db для запуска запроса, происходит сбой веб-сайта, и я вижу сообщение об ошибке в журнале приложений, которое он пытается подключиться к Sql, используя идентификатор пула приложений. В моей строке подключения не используется встроенная защита. Почему это должно быть?

ответ

0

Вы могли бы просто follow this link. Или это работает для меня. Вот строка соединения в моем файле .config:

<connectionStrings> 
    <add name="ConnectionStringName" connectionString="data source=dataSource;initial catalog=initialCatalog;user id=userName;password=password;MultipleActiveResultSets=True;App=AppName" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 

Вот инициализация:

public class SchoolDBInitializer : DropCreateDatabaseAlways<SchoolDBContext> 
    { 
     protected override void Seed(SchoolDBContext context) 
     { 
      IList<Standard> defaultStandards = new List<Standard>(); 

      defaultStandards.Add(new Standard() { StandardName = "Standard 1", Description = "First Standard" }); 
      defaultStandards.Add(new Standard() { StandardName = "Standard 2", Description = "Second Standard" }); 
      defaultStandards.Add(new Standard() { StandardName = "Standard 3", Description = "Third Standard" }); 

      foreach (Standard std in defaultStandards) 
       context.Standards.Add(std); 

      base.Seed(context); 
     } 
    } 

А вот контекст:

public class SchoolContext : DbContext 
{ 
    public SchoolContext() 
     : base("SchoolDBConnectionString") 
    { 
     Database.SetInitializer<SchoolContext>(new SchoolDBInitializer<SchoolContext>()); 
    } 

    public DbSet<Student> Students { get; set; } 
    public DbSet<Standard> Standards { get; set; } 
} 

Вот good link, а также.

+0

Все очень полезная информация для новичка для EF, но не затрагивает ни один из моих двух вопросов. –

+0

Я могу только ответить на общие вопросы с помощью общих ответов. Где строка подключения? Данные семян не вставлены, хорошо, когда? Почему вы ожидаете, что он будет вставлен? Какая версия SQL Server? Мне нужно больше деталей. – BBauer42

+0

Я нашел решение; см. мой ответ. Спасибо за ваш ответ, во всяком случае! –

0

ОК, часть этого «D'oh!», А часть не так много.

  1. Данные семян должны быть вызваны явно, как в this answer.
  2. Строка подключения ... ну, я установил строку подключения, но кто-то изменил ее, не заметив меня. Сбросьте строку подключения, чтобы использовать имя пользователя и пароль, и все работает нормально.
Смежные вопросы