C#-由外键ef 4.3编写的第一个复合键代码
作者:互联网
我在使用EF 4.3代码中的外键创建复合键时遇到问题.我想通过数据注释解决这个问题.我找不到正确的数据注释,该注释说EventID是Event的外键,并且是EventVote表中主键的一部分.我如何做到这一点
public class EventVote
{
[Key, Column(Order = 0)]
[ForeignKey("Event")]
public int EventID { get; set; }
[Key, Column(Order = 1)]
[ForeignKey("User")]
public int UserID { get; set; }
[Required]
public DateTime VoteTime { get; set; }
[Required]
public bool Vote { get; set; }
public virtual Event Event { get; set; }
public virtual User User { get; set; }
}
错误
在表’EventVotes’上引入FOREIGN KEY约束’EventVote_User’可能会导致循环或多个级联路径.指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束.
无法创建约束.请参阅先前的错误.
解决方法:
尝试这个.您也可以在导航属性上放置ForeignKey注释,并引用FK的名称.不确定是否可以解决您的问题,但值得尝试
public class EventVote
{
[Key, Column(Order = 0)]
public int EventID { get; set; }
[Key, Column(Order = 1)]
public int UserID { get; set; }
[Required]
public DateTime VoteTime { get; set; }
[Required]
public bool Vote { get; set; }
[ForeignKey("EventID")]
public virtual Event Event { get; set; }
[ForeignKey("UserID")]
public virtual User User { get; set; }
}
编辑:从您的错误消息听起来像您有一个问题,类似于一对一的关系映射.请参阅本文,了解如何指定使用fluent API在每个关系的一侧禁用级联.
请参阅解决此问题的本文.请注意,他们使用的是Fluent API(可用来代替数据注释)来指定映射/关系,或者您可以使用“数据注释”,并仅在必要时使用Fluent API关闭级联/更新.
标签:ef-code-first,code-first,c 来源: https://codeday.me/bug/20191201/2082074.html