Вопросы о строке подключения Entity Framework 6

У меня есть первый проект кода C# ASP.NET MVC, который работает так, как и предполагалось, для подключения к моей базе данных. У него есть строка подключения, установленная в файле 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 \ моего проекта. Я также изменил действие сборки для объекта HorstMFG.edmx с «Нет» на «Встроенный ресурс». Это ничего не помогло.

Вопросы о строке подключения Entity Framework 6

Я использовал этот класс построителя соединений несколько лет назад, и я знаю, что он работает ... заметил разницу в вашем примере и в том, на который вы ссылались. В вашей версии отсутствует "Model.csdl" в мета ... почти наверняка EF требует все 3 ссылки res. Попробуйте вот так и посмотрите, работает ли это. res: //*/Model.csdl | res: //*/Model.ssdl | res: //*/Model.msl

user1011627 07.06.2018 16:22

Коду EF они сначала не нужны.

Reza Aghaei 07.06.2018 16:43

См. Дополнительную информацию в отредактированном вопросе.

user3140383 07.06.2018 17:00

Извините, я замалчил тот факт, что вы сначала делали код ... взгляните на этот вопрос SO ... он больше соответствует тому, что вы пытаетесь сделать. stackoverflow.com/questions/25092218/…

user1011627 07.06.2018 17:06

Добавлены подробности к исходному вопросу.

user3140383 07.06.2018 18:18
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
5
161
0

Другие вопросы по теме