2012-06-16 6 views
6

У меня есть первое веб-приложение EF-кода, которое отлично работает и правильно подключается к серверу базы данных. Я добавил консольное приложение к решению, чтобы проверить логику для службы, которая будет работать вместе с приложением.Приложение Entity Framework Console, подключающееся к неправильной базе данных

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

Вот строка соединения с app.config:

<add name="DatabaseContext" connectionString="Data Source=xxx.xx.x.xx; Initial Catalog=OKWU_Gateway; User ID=xxxxx; Password=********; Trusted_Connection=False;" providerName="System.Data.SqlClient" /> 
    <add name="DevelopmentEntities" connectionString="metadata=res://*/EntityModel.csdl|res://*/EntityModel.ssdl|res://*/EntityModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=;Data Source=|DataDirectory|\OKWU_Gateway.mdf" providerName="System.Data.EntityClient" /> 

DatabaseContext является

приложение консоли очень просто

Database.SetInitializer<DatabaseContext>(null); 
    static void Main(string[] args) 
    { 
     using (DatabaseContext db = new DatabaseContext()) 
     { 
      var query = from u in db.Users where u.Id == 1 select u; 
      foreach (User u in query) 
      { 
       Console.WriteLine(u.Id + " " + u.FirstName + " " + u.LastName); 
      } 
      Console.ReadLine(); 
     } 
    } 

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

UniversityGateway.Data.DatabaseContext 

Я попытался изменить строку подключения, чтобы указать | DataDirectory | к строке подключения SQL и это не имеет никакого значения. Строки подключения такие же, как в web.config, и, как я уже сказал, веб-приложение работает нормально.

Любые идеи о том, что мне не хватает, или указать мне в правильном направлении, чтобы решить эту проблему?

+0

просто проверка ... у вас нет каких-либо бродячих файлов ресурсов, которые вас окружают? –

+1

Почему в мире кто-то занижал бы это и не стал бы оставлять комментарий. – Brian

+1

Как выглядит конструктор контекста? –

ответ

0

ОК после многократного поиска я нашел решение. Не уверен, что это правильный/лучший, но он работает, поэтому я могу двигаться дальше.

Поскольку приложение консоли не уважая строку подключения в app.config, я указал соединение в коде с

db.Database.Connection.ConnectionString 

Все еще чувствую, что я что-то отсутствует, хотя здесь.

Обнаружено, что дополнительная часть моей проблемы заключается в том, что EF Codefirst не очень хорошо работает с типами данных Sql Server 2005 DateTime.

+1

Существует хорошая вероятность, что проблема связана с конструктором вашего класса DbContext, поэтому, пожалуйста, следуйте комментарию @Ladislav и вставьте его в свой вопрос. – kingdango

+0

на самом деле это потому, что типы данных ef datetime не синхронизируются с типом данных datetime sql 2005. Если бы мы сгенерировали файл emdx из существующей базы данных, тогда мы могли бы добавить параметр токена прокси-манифеста, чтобы позволить ему хорошо играть с 2005 годом, но сначала использовать код, который не был вариантом. Исправлено это при перезаписывании. – Brian