Разработка и производство баз данных - PullRequest
3 голосов
/ 31 марта 2012

Я и моя команда сейчас работаем над проектом, в котором мы используем Entity Framework 4.1 (Code First).Мы хотим написать несколько тестов, но не хотим, чтобы они выполнялись на нашей основной базе данных, поскольку у нас есть команда в Сингапуре, которая пишет клиент для того, что мы делаем, и они постоянно обращаются к этой базе данных.

Поэтому, чтобы избежать помех при выполнении наших тестов, мы хотели бы иметь другую базу данных для тестирования.Как мы обрабатываем вторую базу данных при использовании Entity Framework?Нам нужно решение, которое будет полуавтоматическим (по крайней мере), поэтому нам не нужно возиться с Web.config каждый раз, когда нам нужно запустить тесты.

Ответы [ 2 ]

2 голосов
/ 01 апреля 2012

Возиться с web.config может процесс, который подвержен ошибкам ... если только вы не используете web.config Преобразования , то есть.

Я бы создал новую конфигурацию "Test" для вашего проекта в Visual Studio ... это может быть копия существующей конфигурации разработки (или Debug / Release, как угодно). Затем щелкните правой кнопкой мыши файл Web.config в обозревателе решений и выберите Добавить преобразования конфигурации . Следуйте инструкциям здесь о том, как написать файл преобразования. Если вам нужно всего лишь изменить строку подключения EF для тестовой среды, она будет выглядеть примерно так в web.Test.config:

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<connectionStrings>
    <add name="AdventureWorksEntities" 
     connectionString="metadata=.\AdventureWorks.csdl|.\AdventureWorks.ssdl|.\AdventureWorks.msl;
     provider=System.Data.SqlClient;provider connection string='Data Source=TestDB;
     Initial Catalog=AdventureWorks;Integrated Security=True;Connection Timeout=60;
     multipleactiveresultsets=true'" providerName="System.Data.EntityClient" 
    xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>

Обязательно соблюдайте правильную конфигурацию, если хотите запустить тесты.

Configuration Manager

Существует также надстройка Visual Studio SlowCheetah , которая делает весь этот процесс очень плавным изнутри IDE.

1 голос
/ 01 апреля 2012

Решение, полученное из этого сообщения:

//Get the connection string from app.config and assign it to sqlconnection string builder
SqlConnectionStringBuilder sb = new SqlConnectionStringBuilder(((EntityConnection)context.Connection).StoreConnection.ConnectionString);
sb.IntegratedSecurity = false;
sb.UserID ="User1";
sb.Password = "Password1";

//set the object context connection string back from string builder. This will assign modified connection string.
((EntityConnection)context.Connection).StoreConnection.ConnectionString = sb.ConnectionString;

Это позволяет изменять строку подключения во время выполнения.Есть несколько других возможных решений:

  1. Создать свойство оболочки вокруг строки подключения.Из тестов установите другое значение.
  2. Используйте прагмы #IF TEST для указания правильной строки соединения во время компиляции
...