Entity Framework 6 вопросы строки подключения - PullRequest
0 голосов
/ 07 июня 2018

У меня есть проект 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» с «Нет» на «Встроенный ресурс».Это ничего не помогло.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...