Я использую EF 4.1 и создаю обычный файл EF edmx.Я генерирую это из БД.
Когда он сгенерирован, я щелкаю правой кнопкой мыши и выбираю добавить элемент генерации кода, чтобы сгенерировать новые классы, и вместо этого использовать DbContext.Я использую шаблон DbContext Generator.
Все отлично работает.
Затем я пытаюсь запросить контекст:
using (var context = new PasDBEntities())
{
var client=context.ClientCompanies.SingleOrDefault(_=>_.ID==clientCompanyId);
if(client!=null)
У меня нет проблем с созданием нового экземпляра контекста, но когда я пытаюсь сделать запрос, возникает проблема.Я застреваю в исключении UnintentionalCodeFirstException.И получает сообщение об ошибке:
{"Код, сгенерированный с использованием шаблонов T4 для разработки базы данных первой и первой модели, может работать некорректно, если используется в режиме первого кода. Для продолжения использования базы данных первой или первой модели убедитесь, чтострока подключения Entity Framework указана в файле конфигурации исполняемого приложения. Чтобы использовать эти классы, которые были сгенерированы из Database First или Model First, с Code 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>