我正尝试以编程方式创建一个包含LINQ to SQL的数据库。无法以编程方式创建数据库文件(SQL Server 2008 R2 Express)
我试过(以下this):
MySQLSvrDb db = new MySQLSvrDb(@"c:\mydb.mdf");
if (!db.DatabaseExists())
{
db.CreateDatabase();
}
但我得到的SQLException“具有相同名称的数据库不存在,或者指定的文件无法打开,或它位于UNC共享。”
然而,单元测试,我创建了一个数据库,通过以下方式(确保我有每个测试空DB):
MySQLSvrDb db = new MySQLSvrDb(@"C:\testdb.mdf");
if (db.DatabaseExists())
{
Console.WriteLine("Deleting old database...");
db.DeleteDatabase();
}
db.CreateDatabase();
这工作得很好。我的问题是我没有看到第一种方法的区别。问题可能与this有关,但建议的解决方案不起作用。
任何提示?
编辑
如果我只是跳过()步它的工作DatabaseExists,但我需要检查,如果有已经是一个分贝。
'factory.CreateDatabase()'和'db.CreateDatabase()'有什么区别? – Peter 2011-03-11 08:35:57
当然应该是db.CreateDatabase():)。 EDITED – Simon 2011-03-11 08:39:29
什么情况下运行的第一块代码?它是asp.net(MVC?),如果是的话,它是在Web Dev,IIS,IIS express下运行吗? – 2011-03-11 08:46:55