2017-01-24 7 views
0

Я работаю над веб-api, и мне нужно иметь локальный db в папке App_Data, я использую Entity Framework Code First, но он не создает базу данных в App_DataEntity Framework не создает базу данных в App_Data

Вот моя строка соединения:

<connectionStrings> 
    <add name="TestDBContext" 
     connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=TestDB;Integrated Security=True;MultipleActiveResultSets=True;AttachDBFilename=|DataDirectory|TestDB.mdf;User Instance=True" 
     providerName="System.Data.SqlClient" /> 
    </connectionStrings> 

я использовал Показать все файлы в меню проекта и бла-бла-бла

но база данных является создание в

C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA 

Как это исправить?

+0

Добавить строку 'AttachDbFileName =' внутри строки подключения. [Ссылка] (https://msdn.microsoft.com/en-us/library/jj653752 (v = vs.110) .aspx # localdb) –

ответ

0

Проблема решена путем установки Sql LocalDB

1

Да, это по умолчанию. Есть два способа исправить:

1) Добавить строку подключения конструктора контекста:

public ApplicationDbContext() 
     : base("TestDBContext") { } 

2) Добавить подключение по умолчанию фабрики в вашу конфигурацию:

<entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"> 
    <parameters> 
     <parameter value="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=TestDB;Integrated Security=True;MultipleActiveResultSets=True;AttachDBFilename=|DataDirectory|TestDB.mdf;User Instance=True" /> 
    </parameters> 
    </defaultConnectionFactory> 
</entityFramework> 

См https://msdn.microsoft.com/en-us/data/jj556606

+0

привет, чувак! я использую ваш код, но он тоже не работает, на самом деле теперь я получаю сообщение об ошибке, в то время как я пытаюсь вставить новые данные, текст ошибки: система не может найти указанный файл – Hooman

+0

Вероятно, происходит при создании базы данных. Попробуйте удалить User Instance = True, который предназначен только для SQL Express. –

+0

Также добавьте обратную косую черту в AttachDBFilename = | DataDirectory | \ TestDB.mdf –

0

Как правило, вам нужно изменить настройки в конфигурации приложения как «AttachDbFileName», иначе по умолчанию используется экземпляр SQL Server Express. Как правило, вы можете просто установить режим прилагается и исправить:

<add name="ConnectionStringName" 
    providerName="System.Data.SqlClient" 
    connectionString="Data Source=(LocalDB)\v11.0;AttachDbFileName=|DataDirectory|\DatabaseFileName.mdf;InitialCatalog=DatabaseName;Integrated Security=True;MultipleActiveResultSets=True" /> 

Вот страница MS на соединениях для вас тоже: https://msdn.microsoft.com/en-us/library/jj653752(v=vs.110).aspx#sqlce \

Хотя я бы СЕРЬЕЗНО предложить, если это не маленький компактный приложение, которое будет иметь небольшой рост, вы не делаете прикрепленную базу данных. Это всего лишь плохая идея для развертывания крупномасштабных приложений и плохой практики вообще, если вы не знаете, что ваша база данных будет в основном всегда маленькой. Только мои два цента.

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