Я удалил строку подключения из моего web.config, и Entity Framework все еще подключается к базе данных! Где установлена строка подключения? Это проблема, потому что мне нужно сделать текущую версию моего веб-сайта ссылкой на живую базу данных.
EntityFramework - где строка соединения?
Ответ 1
Вот что я нашел с философией "соглашение над конфигурацией", когда речь заходит о попытке подключиться к существующим базам данных (например, вы делаете).
Если ваш класс DbContext (например, Northwind) находится в пространстве имен (например, MvcProject), по какой-то причине EF не будет соответствовать имени класса со строкой соединения в web.config с именем "Northwind" (или "MvcProject". Northwind "), а затем он просто создаст строку подключения по умолчанию для локального экземпляра SQLEXPRESS с базой данных, называемой" MvcProject.Northwind ". Это будет пустая база данных. И вы сломаете себе голову, пытаясь понять, почему вы не возвращаете данные, пока не поймете, что вы не подключены к правильной БД.
Как мне это удалось (не изящно, но это самый быстрый способ найти его): добавьте конструктор в свой класс DbContext, который вызывает базу с именем строки подключения в web.config - например.
namespace MvcProject
{
public class Northwind : DbContext
{
public Northwind() : base("Northwind") {}
}
}
Надеюсь, что кто-то поможет, -)
Ответ 2
Вам понадобится что-то вроде этого:
<configuration>
<connectionStrings>
<add name="MyContext"
connectionString="Data Source=.\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=YourDatabaseName"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
Или, если ваша база данных находится в папке App_Data
:
<configuration>
<connectionStrings>
<add name="MyContext"
connectionString="Data Source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|YourDatabaseFilename.mdf;User Instance=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
Замените MyContext
именем вашего класса, который расширяет DbContext
.
Ответ 3
EF не смог найти соединение для меня, но я использовал строку подключения в базе():
namespace MvcProject
{
public class Northwind : DbContext
{
public Northwind() :
base("Data Source=servername;Initial Catalog=database;User ID=yourID;Password=yourPass;Trusted_Connection=False;") {}
}
}
Просто протестируйте соединение, и он сработал.
Ответ 4
Конвенция > Конфигурация, правильно?
По умолчанию кулак EF-кода создаст базу данных в вашем локальном экземпляре SQL Express.
Ответ 5
Посмотрите в App.Config. Он также сохранит его там.
Ответ 6
Я столкнулся с той же проблемой и просто изменил имя строки подключения, как это было предложено в файле web.config, как имя контекста db, и все прошло хорошо.
Ответ 7
Щелкните правой кнопкой мыши на вашем режиме Entity Framework (файл edmx) > goto Properties. Вы увидите там строку подключения.
Если ваша модель Entity Model находится в отдельном проекте, то она должна быть в ее собственном файле настроек.
Ответ 8
Если вы используете codefirst aproach с DbContext, вы можете поместить строку соединения с именем, соответствующим вашему имени класса контекста, в вашем web.config, и он будет работать нормально.