linq к объектам, изменяющим строку подключения к базе данных в коде - PullRequest
2 голосов
/ 13 января 2011

Я использую компонент devart dotconnect для postgresql. Я создал сайт, используя linq для сущностей, однако я бы хотел, чтобы у каждого пользователя была отдельная база данных. Это означает, что мне нужно изменить строку подключения для каждого пользователя, вошедшего в систему. Однако я понимаю основную часть того, как создать новую строку подключения и т. Д., Когда я передаю это как параметр в объектный контекст объекта, он возвращается с ошибкой

"ключевое слово с идентификатором пользователя не поддерживается"

если я создаю класс, который генерирует соединение сущности, сообщение об ошибке изменится на:

"Невозможно загрузить указанный ресурс метаданных."

Не могу понять, что я сделал неправильно в этих случаях.

1 Ответ

5 голосов
/ 13 января 2011

хорошо, поэтому, как обычно, когда я отправил этот вопрос, примерно через 3 минуты я обнаружил проблему.Строка соединения сущности для общих целей должна иметь классный маленький

res: // * /

, что заставляет работать метаданные.Это решает проблему ресурса метаданных, и это работает.Чтобы помочь другим, которые, как и я, могли потратить время на разработку, я создал класс с помощью метода, подобного этому.

 public static string getConnString(string database)
    {
        string connectionstring = "User Id=USER ID HERE;Password=PASSWORD HERE;Host=server;Database="+database+";Persist Security Info=True;Schema=public";

        EntityConnectionStringBuilder newconnstring = new EntityConnectionStringBuilder();
        newconnstring.Metadata = @"res://*/"; 
        newconnstring.Provider = "Devart.Data.PostgreSql";
        newconnstring.ProviderConnectionString = connectionstring;


        return newconnstring.ToString();

    }

, а затем создал конструктор, подобный такому1010 * Тогда мы можем ссылаться на это так же, как обычное выражение linq.Simples !!

...