实体框架控制台应用程序连接到错误的数据库

时间:2012-06-16 19:37:55

标签: c# entity-framework ef-code-first

我有一个EF代码第一个Web应用程序正常工作并正确连接到数据库服务器。我已经为解决方案添加了一个控制台应用程序,以测试与应用程序一起运行的服务的逻辑。

对控制台应用程序没有保存数据的原因感到头疼,所以我把它减少到数据库的简单提取,结果原来的控制台应用程序正在保存记录,但是到了不同的数据库连接字符串中指定的内容。

以下是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();
        }
    }

但它没有连接到远程服务器上的数据库,而是连接到dev机器上的sqlexpress并点击该数据库。

UniversityGateway.Data.DatabaseContext

我尝试更改连接字符串以指向| DataDirectory |到SQL连接字符串,并没有任何区别。连接字符串与web.config中的连接字符串相同,正如我所说,Web应用程序正常工作。

关于我缺少的任何想法或指出我正确的方向来解决这个问题?

1 个答案:

答案 0 :(得分:0)

经过大量挖掘后我找到了解决方案。不确定它是否是正确的/最佳的,但它确实有效,所以我可以继续前进。

由于控制台应用程序不尊重app.config中的连接字符串,因此我在代码中指定了连接

db.Database.Connection.ConnectionString

虽然我觉得我在这里错过了一些东西。

发现我的另一部分问题是EF Codefirst与Sql Server 2005 DateTime数据类型不兼容。