2013-09-23 3 views
7

Определение типа поставщика типа F # часто требует постоянного выражения, например. для поставщика типа SQL:Поставщики типов F # и непрерывная интеграция

type dbSchema = SqlDataConnection<"Data Source=MySqlServer;Initial Catalog=MyDatabase;"> 

Однако при совершении кода в SCM, и дополнительно имеет сервер сборки делает свое дело, вы, вероятно, не хотите использовать ту же строку соединения, а скорее строку подключения базы данных SQL-сервера, которая создается из процесса сборки.

Есть ли решение этой проблемы?

Было бы очень приятно иметь возможность выполнить эту работу, поскольку это обеспечило бы проверку времени доступа к коду доступа к базе данных.

Update Решение, предложенное @tomaspetricek работал очень хорошо, но я должен был добавить имя поставщика в строке соединения:

<add name="DbConnectionString" providerName="System.Data.SqlClient" connectionString="Data Source=MySqlServer;Initial Catalog=MyDatabase;"/> 
+0

Было бы даже лучше, если бы эта строка была получена из файла конфигурации. –

+0

@RobertHarvey Действительно, это именно то, что можно легко сделать ;-) –

ответ

12

Можно, конечно, указать строку соединения с помощью ключа в файл конфигурации (см MSDN documentation):

SqlDataConnection<ConnectionStringName="...", ConfigFile="app.config"> 

В общем, поставщике типа может потребоваться некоторое постоянное выражение, но я думаю, что большинство из широко используемых из них предоставляет возможность для избегая этого. Например, SqlDataConnection может считывать настройки из файла конфигурации, другие стандартные поставщики типов F # позволяют указать LocalSchemaFile, что позволяет локально указать необходимую структуру (например, файл *.dbml для SQL).

Поставщики данных типа F # могут переносить URL-адрес в удаленный файл, но также могут принимать локальный файл. Поэтому я думаю, что всегда должен быть способ указать информацию без указания постоянной строки соединения (и т. Д.), Но не стесняйтесь спрашивать об определенных провайдерах.

+0

Я обновил вопрос на примере. – spacedoom

Смежные вопросы