在学习SQL Azure时我遵循了本教程并成功完成了它: Windows Azure Tutorial
我想创建一个类似的应用程序,但是使用代码第一种方法实现更复杂的数据库,在输入'update-database'命令后,我收到以下错误:
Cannot attach the file 'c:\users\dadler\documents\visual studio 2012\Projects\EliteTrainingAzure\EliteTrainingAzure\App_Data\EliteTrainingAzure.Models.EliteTrainingDB.mdf' as database 'EliteTrainingAzure.Models.EliteTrainingDB'.
这是我的连接字符串:
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-EliteTrainingAzure-20130325095843;User Intance = True;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-EliteTrainingAzure-20130325095843.mdf" providerName="System.Data.SqlClient"/>
最后这里是我如何处理外键创建的一个例子:
namespace EliteTrainingAzure.Models
{ 公共类客户 { [键] public int ClientID {get;组; }
public int GoalID { get; set; }
[ForeignKey("GoalID")]
public Goal Goal { get; set; }
public int TrainerID { get; set; }
[ForeignKey("TrainerID")]
public Trainer Trainer { get; set; }
public string ClientName {get; set;}
public string ClientAddress { get; set; }
public string ClientCity { get; set; }
public string ClientState { get; set; }
public string ClientZip { get; set; }
如果有人能指出我正确的方向,如何解决这个错误,这将是伟大的。提前谢谢!
答案 0 :(得分:2)
我不时在本地项目上遇到同样的问题。
虽然我还没有确定原因,但这似乎是一种解决方法:
将初始目录和.mdf文件重命名为新值,然后再次运行Update-Database。
E.g:
...Initial Catalog=aspnet-EliteTrainingAzure-20130325095843;...
要
...Initial Catalog=aspnet-EliteTrainingAzure-xxx;...
和
...AttachDBFilename=|DataDirectory|\aspnet-EliteTrainingAzure-20130325095843.mdf"
要
...AttachDBFilename=|DataDirectory|\aspnet-EliteTrainingAzure-xxx.mdf"
似乎还可以将连接字符串恢复为原始命名,并重命名实际的.mdf文件。
注意:我不知道这是否意味着底层数据库系统或数据迁移模型数据库混乱了“孤立”数据库引用。处理 new 名称时,Update-Database进程似乎没有问题。
注意:请记住,这是一种解决方法,而不是解决方案。 :)
西格尔德