У меня есть проект C # ASP.NET MVC code first, который работает так, как задумано, для подключения к моей базе данных.У него есть строка подключения, заданная в файле web.config, и все, кажется, работает отлично.
<connectionStrings>
<add name="HorstMFGContext" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|HorstMFG.mdf;Initial Catalog=aspnet-HorstMFG;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
Теперь мне нужно подключиться к той же базе данных из другого приложения, которое должно быть библиотекой классов на основе WinForms.,У меня нет доступа к исходному коду программы, которая использует мою DLL, потому что мое приложение является просто плагином для Autodesk Vault.
Существует множество примеров , таких как этот которые показывают, как установить строку подключения в приложении, которое вызывает DLL, но это, очевидно, не сработает в моем случае.
Эта ссылка здесь , кажется, очень близко к тому, что мне нужно, но я не смог заставить его работать.Вот моя версия функции «Создать».
public static HorstMFGEntities Create(string nameOrConnectionString)
{
var entityBuilder = new EntityConnectionStringBuilder();
// use your ADO.NET connection string
entityBuilder.ProviderConnectionString = nameOrConnectionString;
// Set the Metadata location.
entityBuilder.Metadata = @"res://*/HorstMFG.ssdl|res://*/HorstMFG.msl";
return new HorstMFGEntities(entityBuilder.ConnectionString);
}
Вот строка, которая вызывает функцию:
using (var db = HorstMFGEntities.Create(@"data source=(localdb)\MSSQLLocalDB;attachdbfilename=C:\Users\lorne\source\repos\HorstMFG\HorstMFG\App_Data\HorstMFG.mdf;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"))
{
foreach (string l in lineList3)
{
....
....
Вот фактическая строка, которая вызывает исключение.
// calculate material
Material mat = db.Materials.Where(m => m.StructuralCode == l.Split('\t')[6]).FirstOrDefault();
Сообщение об исключении "Ошибка: ключевое слово не поддерживается: 'метаданные'.
Любая помощь, чтобы указать мне в правильном направлении, приветствуется. Спасибо.
Я обновил свойкод в соответствии с первым комментарием, а также добавил пропущенного «провайдера».
public static HorstMFGEntities Create(string nameOrConnectionString)
{
var entityBuilder = new EntityConnectionStringBuilder();
// use your ADO.NET connection string
entityBuilder.ProviderConnectionString = nameOrConnectionString;
entityBuilder.Provider = "System.Data.SqlClient";
// Set the Metadata location.
entityBuilder.Metadata = @"res://*/HorstMFG.csdl|res://*/HorstMFG.ssdl|res://*/HorstMFG.msl";
return new HorstMFGEntities(entityBuilder.ConnectionString);
}
Теперь я получаю ошибку «Ошибка: невозможно загрузить указанный ресурс».
Я теперь следовал инструкциям в ссылке, которую вы предоставили. Я думаю, что, должно быть, уже близко, но я немного запутался в формате метаданных. Кажется, есть часть, закомментированная вНапример, я заменил его следующим:
entityBuilder.Metadata = "res://*/HorstMFG.csdl|res://*/HorstMFG.ssdl|res://*/HorstMFG.msl";
Теперь я получаю сообщение об ошибке: «Не удается загрузить указанный ресурс метаданных»
Я подтвердил, что файлы, на которые я ссылаюсь, существуют, онинаходятся в ... \ obj \ Debug \ edmxResourcesToEmbed \ foldэ-э в моем проекте.Я также изменил «действие сборки» для объекта «HorstMFG.edmx» с «Нет» на «Встроенный ресурс».Это ничего не помогло.
