Перемещение строки подключения из app.config в код на C # - PullRequest
2 голосов
/ 23 января 2012

Я пытаюсь использовать Entity Framework, и он помещает строку подключения в app.config. Я хотел бы переместить его в код, так как мне легче на данном этапе разработки.

metadata=res://*/database.csdl|res://*/database.ssdl|res://*/database.msl;provider=System.Data.SqlClient;provider connection string="data source=computer;initial catalog=database;persist security info=True;user id=user;password=Mabm@A;multipleactiveresultsets=True;App=EntityFramework"

Как я могу заставить Entity Framework использовать строку соединения из кода, а не смотреть на app.config? Или, если это невозможно, как я могу передать параметры в app.config (например, dbname, dbuser, dbpassword)?

Ответы [ 5 ]

4 голосов
/ 23 января 2012

Вы можете использовать EntityConnectionStringBuilder для этой цели. Проверьте здесь

public string GetConnectionString()
    {
        string connectionString = new EntityConnectionStringBuilder
        {
            Metadata = "res://*/Data.System.csdl|res://*/Data.System.ssdl|res://*/Data.System.msl",
            Provider = "System.Data.SqlClient",
            ProviderConnectionString = new SqlConnectionStringBuilder
            {
                InitialCatalog = ConfigurationManager.AppSettings["SystemDBName"],
                DataSource = ConfigurationManager.AppSettings["SystemDBServerName"],
                IntegratedSecurity = false,
                UserID = ConfigurationManager.AppSettings["SystemDBUsername"],
                Password = ConfigurationManager.AppSettings["SystemDBPassword"],
                MultipleActiveResultSets = true,
            }.ConnectionString
        }.ConnectionString;

        return connectionString;
    }
2 голосов
/ 23 января 2012

Когда вы создаете экземпляр вашего производного класса ObjectContext, вы можете просто передать строку подключения в качестве аргумента конструктора.

0 голосов
/ 23 января 2012

Если сведения о журнале строки подключения всегда одинаковы, я бы посоветовал вам использовать ConfigurationManager для получения строки подключения из файла app.config и шифрования раздела ConnectionStrings файла.

0 голосов
/ 23 января 2012

Сначала создайте свой контекст, используя конструктор с параметром connectionString.http://msdn.microsoft.com/en-us/library/gg679467(v=vs.103).aspx

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

Более того, если вы хотитеПередав имя пользователя и пароль во время выполнения, вы можете создать строку подключения, используя этот класс: http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnectionstringbuilder.aspx

См. здесь: http://msdn.microsoft.com/en-us/library/bb738533.aspx

0 голосов
/ 23 января 2012

Вместо того, чтобы использовать имя пользователя и пароль, почему бы не использовать Integrated Security?Он более безопасен и прост в управлении.

, т. Е. 'Trusted_Connection = Yes' в строке подключения, и обеспечивает безопасный доступ через AD

Строки подключения

...