Я использую EF 4.1, и я создаю обычный EF edmx файл. Я генерирую его из БД.
Когда он был создан, щелкните правой кнопкой мыши и выберите элемент генерации кода, чтобы создать новые классы и вместо этого используйте DbContext. Я использую генератор шаблона DbContext.
Все работает отлично.
Затем я пытаюсь запросить контекст:
using (var context = new PasDBEntities())
{
var client=context.ClientCompanies.SingleOrDefault(_=>_.ID==clientCompanyId);
if(client!=null)
У меня нет проблем с созданием нового экземпляра контекста, но когда я пытаюсь запросить его, проблема возникает. Я застрял в UnintentionalCodeFirstException. И получает ошибку:
{ "Код, сгенерированный с использованием шаблонов T4 для разработки базы данных First и Model First, может работать некорректно, если используется в режиме Code First. Чтобы продолжить использование базы данных First или Model First, убедитесь, что строка подключения Entity Framework указана в файле конфигурации исполняемого приложения. Чтобы использовать эти классы, которые были сгенерированы из базы данных First или Model First, с кодом First добавьте любую дополнительную конфигурацию с использованием атрибутов или API DbModelBuilder, а затем удалите код, который генерирует это исключение." }
Я не хочу сначала использовать код, но я не знаю, могу ли я его отключить или где проблема.
Для справки, вот мой конструктор...
public partial class PasDBEntities : DbContext
{
public PasDBEntities()
: base("PasDBEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
... и строка подключения:
<connectionStrings>
<add name="PasDBEntities"
connectionString="metadata=res://*/PasDB.csdl|
res://*/PasDB.ssdl|
res://*/PasDB.msl;
provider=System.Data.SqlClient;
provider connection string="
data source=localhost;
initial catalog=PasDB;
integrated security=True;
pooling=False;
multipleactiveresultsets=True;
App=EntityFramework""
providerName="System.Data.EntityClient" />
</connectionStrings>