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