У меня есть dll, которая использует Entity Framework 6 для выполнения некоторых операций с базой данных. Я использую первый подход к базе данных. Модель и все, что связано с платформой Entity Framework, как и строка подключения в App.config, были созданы с помощью wizzard в Visual Studio.Entity Framework 6 установил строку подключения в коде
Поэтому я скомпилировал dll и поместил его вместе с соответствующим .config в папку, в которой ожидает приложение, использующее dll.
Все работает нормально, пока не дойду до того момента, когда будет выполнен фактический вызов базы данных. Там я получаю ошибку:
Cannot find connection string for MyDatabaseEntity
Автоматически сгенерированная строка соединения, как я уже сказал, в файле конфигурации DLL. Я не могу изменить App.config приложения. Но приложение передает объект, у которого есть вся информация, необходимая мне для сборки строки подключения. Итак, я ищу способ установить строку соединения в коде, не полагаясь на файл конфигурации. Все эти учебники, которые я нахожу для первого подхода к базе данных, используют этот метод. Я нашел пост здесь, который говорит, чтобы просто дать строку соединения в качестве параметра при создании объекта, как
MyDatabaseEntities = new MyDatabaseEntities(dbConnect);
но'MyDatabaseEntities' не имеет конструктор, который принимает любые параметры
public partial class MyDatabaseEntities : DbContext
{
public MyDatabaseEntities()
: base("name=MyDatabaseEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public virtual DbSet<MyTable> MyTable { get; set; }
}
Я не знал, что строка в базе() была строка соединения. Спасибо, что сделал. – FNR
Да, он пытается найти строку соединения с именем, указанным в скобках в файле конфигурации вашего проекта запуска. –
Я установил соединение, как это: string connection = @ "metadata = res: //*/ShopModel.csdl | res: //*/ShopModel.ssdl | res: //*/ShopModel.msl; поставщик = System.Data.SqlClient; строка подключения поставщика = " источник данных = SIPL35 \ SQL2016; начальный каталог = Join8ShopDB2; user id = Sa; password = Sa123! @ #; MultipleActiveResultSets = True; App = EntityFramework " "; Join8ShopDBEntities dbContext = new Join8ShopDBEntities (соединение); но он дает мне исходное ключевое слово источника данных, не идентифицированное исключение –