我有一个 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="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 并访问该数据库。
UniversityGateway.Data.DatabaseContext
我尝试更改连接字符串以指向 |DataDirectory|到 SQL 连接字符串,这没有任何区别。连接字符串与 web.config 中的相同,正如我所说,网络应用程序运行良好。
关于我遗漏的任何想法或指出正确的方向来解决这个问题?
最佳答案
好的,经过大量挖掘,我找到了解决方案。不确定它是否是正确的/最好的,但它有效,所以我可以继续前进。
由于控制台应用程序不遵守 app.config 中的连接字符串,我在代码中指定了连接
db.Database.Connection.ConnectionString
虽然我仍然觉得我在这里遗漏了一些东西。
发现我的问题的另一部分是 EF Codefirst 不能很好地处理 Sql Server 2005 DateTime 数据类型。
关于c# - Entity Framework 控制台应用程序连接到错误的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11066466/