Sac*_*nth 11 entity-framework-5
我有这些课程
public class Bid : ...
{
...
[Required]
public virtual TraderUser Trader { get; set; }
}
public class TraderUser : ...
{
...
}
Run Code Online (Sandbox Code Playgroud)
然后我按以下方式更改了这些类,并添加了一个新类
public class Bid : ...
{
...
[Required]
public virtual TraderUser TraderUser { get; set; }
}
public class TraderUser : ...
{
...
public int TraderCompanyId { get; set; }
[ForeignKey("TraderCompanyId")]
public virtual TraderCompany TraderCompany { get; set; }
}
public class TraderCompany : ...
{
...
}
Run Code Online (Sandbox Code Playgroud)
当我做更新数据库时,我收到以下错误
ALTER TABLE语句与FOREIGN KEY约束"FK_dbo.Bid_dbo.TraderUser_TraderUser_Id"冲突.冲突发生在数据库"LeasePlan.Development",表"dbo.TraderUser",列"Id"中.
我无法让数据库更新.任何帮助深表感谢.
Min*_*nja 32
不知道是否为时已晚,但我有同样的问题,也许这可以帮到你.
我无法从您的帖子中看到,但可能您的TraderUser表已经插入了一些行.您要完成的是创建新表TraderCompany并在TraderUser中创建指向TraderCompany表的外键关系.
在一次迁移中,您尝试为已包含数据的表创建不可为空的外键关系.
您可以尝试以下方法:
第一次迁移 - 一切都一样,除了这一行
public int TraderCompanyId { get; set; }
Run Code Online (Sandbox Code Playgroud)
应该
public int? TraderCompanyId { get; set; }
Run Code Online (Sandbox Code Playgroud)
这将允许您创建可为空的外键列.
使用TraderCompany表中的某一行更新现有数据的TraderCompanyId列.
第二次迁移 - 更改代码
public int? TraderCompanyId { get; set; }
Run Code Online (Sandbox Code Playgroud)
至
public int TraderCompanyId { get; set; }
Run Code Online (Sandbox Code Playgroud)
并运行您的迁移.
我希望这能帮到您.
| 归档时间: |
|
| 查看次数: |
9841 次 |
| 最近记录: |