2013-08-16 6 views
3

Я создал базу данных, используя EF-код, например, http://blogs.msdn.com/b/adonet/archive/2011/03/15/ef-4-1-code-first-walkthrough.aspx. Но когда я вводил данные в db на add(), а затем звонил savechanges() Я не вижу новую базу данных в папке баз данных SQL Server и исключений нет. Это правильно? Где я могу найти свою базу данных и как ее поместить в папку с базами данных?Невозможно увидеть базу данных EF в SQL Server Management Studio

Я работаю с этим кодом:

 public class Name 
     { 
     public long NameId { get; set; } 
     public string FullName { get; set; } 
     } 

    public class InfoContext : DbContext 
    { 
     public DbSet<Name> Names { get; set; }   
    } 

Тогда я назвал его:

 var db = new InfoContext(); 
     var Names = new Name 
     { 
      NameId = 1, 
      FullName = "test" 
     }; 
     db.Names.Add(Name); 

     db.SaveChanges(); 
     var test = db.Names.Find(1);//there I get correct value 

У меня есть ConnectionString в web.config, как это:

 <connectionStrings> 
    <add name="InfoName" providerName="System.Data.SqlClient" 
    connectionString="Server = .\MYINSTANCE; Initial Catalog=mydbname;" /> 
    </connectionStrings> 
+0

Похоже, вы не подключаетесь к требуемому экземпляру SQL-сервера. Проверьте свой файл app.config и посмотрите, какой тип 'type' имеет ключ' defaultConnectionFactory'. –

+0

В моем проекте mvc4 по умолчанию нет app.config. Как его создать и заполнить? Когда я перезапускаю режим отладки, я получаю исключение, которое говорит о существующей базе данных и рекомендует переносить. –

+0

Если вы получаете эту ошибку, DbContext - это соединение с чем-то. Есть ли файл web.config? –

ответ

1

на основе ваших комментариев вам необходимо изменить файл web.config в корне вашего проекта (не тот, который находится в вашем Views папка. В то вы можете добавить раздел следующим образом:

<connectionStrings> 
    <add name="EFDbContext" connectionString="Data Source = .; Initial Catalog = ITSDB; Integrated Security = true" providerName="System.Data.SqlClient"/> 
</connectionStrings> 

Имя свойства элемента является имя DbContext вашей модели данных, поэтому, если ваш класс определен как:

public class SomeContext : DbContext 
{ 
     ... 
} 

Тогда ваш конфигурационный должен быть:

<connectionStrings> 
    <add name="SomeContext" connectionString="Data Source = .; Initial Catalog = ITSDB; Integrated Security = true" providerName="System.Data.SqlClient"/> 
</connectionStrings> 

Что касается строки подключения, то она зависит от вашей базы данных.

+0

Я добавил пример кода. Если я использую имя cString, например имя класса SomeContext, возникает ошибка (некорректная cString). –

+0

Какая ошибка? Что вы подразумеваете под cString? –

0

Проверьте тип defaultConnectionFactory в своей конфигурации. Я ожидаю, что он установлен в LocalConnectionFactory, так как это кажется по умолчанию.

Измените его следующим образом и будет использован ваш экземпляр SQL.

<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"> 
    <parameters> 
    <parameter value="Data Source=.; Integrated Security=True; MultipleActiveResultSets=True;" /> 
    </parameters> 
</defaultConnectionFactory> 

Ваш DB должен появиться в SQL Management Studio (SQLMS) с именем, которое соответствует пространству имен и DbContext.

0

Или вы можете просто ввести «Источник данных =» значение имени вашего сервера, выбранного в SQL Management Studio.

<connectionStrings> 
<add name="SomeContext" connectionString="Data Source = **Server'sName**; Initial Catalog = ITSDB; Integrated Security = true" providerName="System.Data.SqlClient"/> 

Смежные вопросы