6

我有一个运行良好并正确连接到数据库服务器的 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" />

数据库上下文是

控制台应用程序非常简单

    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 并访问该数据库。

UniversityGateway.Data.DatabaseContext

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

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

4

1 回答 1

0

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

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

db.Database.Connection.ConnectionString

不过,我仍然觉得我在这里遗漏了一些东西。

发现我的问题的另一个部分是 EF Codefirst 不能很好地处理 Sql Server 2005 DateTime 数据类型。

于 2012-06-18T02:53:31.013 回答