Я пытался дооснастить отличную реализацию EF, которую я нашел здесь .К сожалению, код был написан для первой реализации кода, и я сначала использую модель, так как у меня уже есть база данных, запущенная и работающая с другим приложением.
В файле ObjectContextBuilder.cs есть следующий метод:
public ObjectContextBuilder(string connectionStringName, string[] mappingAssemblies, bool recreateDatabaseIfExists, bool lazyLoadingEnabled)
{
this.Conventions.Remove<IncludeMetadataConvention>();
_cnStringSettings = ConfigurationManager.ConnectionStrings[connectionStringName];
_factory = DbProviderFactories.GetFactory(_cnStringSettings.ProviderName);
_recreateDatabaseIfExists = recreateDatabaseIfExists;
_lazyLoadingEnabled = lazyLoadingEnabled;
AddConfigurations(mappingAssemblies);
}
Я предполагаю, что EDMX будет содержать сопоставления, которые требуются предыдущему методу, поэтому я пытаюсь добавить сималярный метод, который будет принимать ObjectContext из EDMX, например:
public ObjectContextBuilder(string connectionStringName, ObjectContext context, bool recreateDatabaseIfExists, bool lazyLoadingEnabled)
{
this.Conventions.Remove<IncludeMetadataConvention>();
_cnStringSettings = ConfigurationManager.ConnectionStrings[connectionStringName];
_factory = DbProviderFactories.GetFactory(_cnStringSettings.ProviderName);
_recreateDatabaseIfExists = recreateDatabaseIfExists;
_lazyLoadingEnabled = lazyLoadingEnabled;
}
И вотвызывающий метод:
ObjectContextManager.InitStorage(new SimpleObjectContextStorage());
var context = ((IObjectContextAdapter)new SidekickEntities());
ObjectContextManager.Init("SidekickEntities", context.ObjectContext, true);
Когда выполнение доходит до назначения _factory, я получаю ошибку, которая гласит:
Unable to find the requested .Net Framework Data Provider. It may not be installed.
Когда я смотрю на _cnStringSettings, поставщик - System.Data.SqlClient, нопри назначении _factory _cnStringSettings.ProviderName имеет значение System.Data.EntityClient.
Я предполагаю, что это потому, что я пытаюсь использовать сущность, сгенерированную EDMX, и хотел бы знать, есть ли способ получить мой новыйметод для работы.Я довольно новичок в EF Framework и все еще нахожусь в крутой кривой обучения, поэтому, пожалуйста, дайте мне знать, если я совершенно не согласен с тем, что я пытаюсь.
Вот строка подключения, как она хранится в приложении.Config
<add name="SidekickEntities" connectionString="metadata=res://SidekickModel/SidekickModel.csdl|res://SidekickModel/SidekickModel.ssdl|res://SidekickModel/SidekickModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=percepsrvr;Initial Catalog=Sidekick;Integrated Security=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />