2015-04-24 3 views
1

Я немного запутался в первой базе данных сущности кода.Не удается найти мою базу данных Entity Framework

Я создал новый DbContext и класс, который я буду хранящий в этом контексте, как это:

namespace MyProject.Subproject.Something 
{ 
    public class MyItem 
    { 
     public string One { get; set; } 
     public string Two { get; set; } 
     [Key] 
     public string Three { get; set; } 
     public string Four { get; set; } 
    } 

    public class MyAppData : DbContext 
    { 
     public DbSet<MyItem> MyItems { get; set; } 
    } 
} 

Я знаю, что это работает, так как я могу это сделать без отказа:

var db = new MyAppData(); 
MyItem i = new MyItem(); 
// ... fill in item 
db.MyItems.Add(i); 
db.SaveChanges(); 

Кроме того, если я перезапущу приложение, я нахожу db.MyItems.Count(), чтобы отразить, что элементы на самом деле постоянно хранятся где-то.

Я предполагаю, что это хранится в localdb, так как я не создал базу данных SQL Server. Все, что я хочу сделать, - это увидеть таблицу в localdb где-нибудь, однако я не могу ее найти.

Если я перехожу на Data Sources -> Add New Data Source -> Database -> Data Set -> New Connection -> Microsoft SQL Server, а затем введите (localdb)v11.0 для имени сервера и выпадающего списка баз данных, я не вижу перечисленные MyAppData или MyItems.

Edit: То, что я вижу в моем App.config является <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">


Edit 2: Полный App.config

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxx" requirePermission="false" /> 
    </configSections> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="mssqllocaldb" /> 
     </parameters> 
    </defaultConnectionFactory> 
    <providers> 
     <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
    </providers> 
    </entityFramework> 
</configuration> 
+0

В вашей конфигурации должна быть строка подключения. Проверьте там, он покажет путь. –

+0

Если это не в localdb, попробуйте SQL Express. В качестве строки подключения используйте '[My-PC-NAME] \ SQLEXPRESS'. Для меня это JEROEN-DESKTOP \ SQLEXPRESS. Обратите внимание, что имя может быть «DefaultConnection» или что-то подобное. –

+0

@PraveenPaulose это то, что я вижу: '' – gnychis

ответ

10

Вам нужно установить сервер базы данных, как (LocalDB)\MSSQLLocalDB , Это изменение, внесенное в EF 6.1.1 и далее. MSSQLLocalDB упоминается в вашем параметре. Подробнее об изменении можно найти здесь https://entityframework.codeplex.com/workitem/2246

MSSQLLocalDB это имя экземпляра по умолчанию на SQL Server 2014, тогда как v11.0 это имя экземпляра по умолчанию на SQL Server 2012

0

Yep - на основе параметр в вашем defaultConnectionFactory, похоже, вы используете экземпляр SQL 2014 по умолчанию, а не экземпляр 2012 года.

The (LocalDB) \ ProjectsV12 экземпляр создается с помощью инструментов SQL Server Data (SSDT) ​​

(LocalDB) \ MSSQLLocalDB является SQL-сервер 2014 LocalDB по умолчанию имя экземпляра

А (LocalDB) \ V11. 0 - это имя экземпляра SQL Server 2012 LocalDB по умолчанию

1
using (var db = new BloggingContext()) 
{ 
    var connectionString = db.Database.Connection.ConnectionString; 
    Console.WriteLine(connectionString); 
} 

Приведенный выше код использует пример Microsoft; для BloggingContext замените класс DbContext. Он предоставит вам строку соединения, которую использует инфраструктура сущности, которая включает имя экземпляра.

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