我尝试使用代码优先方法实现Entity Framework。
所需的数据库
我有一个非常简单的数据模型。它看起来如下
User
{
int UserId
}
Vote
{
int VoterId
int VoteeId
double Value
}
所需行为
我想要的是让VoterId和VoteeId成为一个复合键,每个键都引用User表的UserId。
此外,我希望删除从用户级别投票到投票。因此,如果用户被删除并且他/她是投票人或投票人,则必须删除相应的投票。
当前域
目前我有以下域名设置:
public class User
{
public int UserId {get;set;}
public ICollection<Vote> VotesForMe {get;set;}
public ICollection<Vote> VotesByMe {get;set;}
}
public class Vote
{
[Key, Column(Order = 0)]
public int VoterId { get; protected set; }
[Key, Column(Order = 1)]
public int VoteeId { get; protected set; }
[ForeignKey("VoterId")]
[Required]
public User Voter {get;set;}
[ForeignKey("VoteeId")]
[Required]
public User Votee {get;set;}
}
我还尝试了以下流畅的配置:
modelBuilder.Entity<Domain.User>()
.HasMany<Domain.Vote>(s => s.VotesForMe)
.WithRequired(s => s.Votee);
modelBuilder.Entity<Domain.User>()
.HasMany<Domain.Vote>(s => s.VotesByMe)
.WithRequired(s => s.Voter);
问题
使用此特定设计和/或fluent配置会产生此错误:
&#34;引入外键约束......可能导致循环或多个路径&#34;
这是因为从用户到投票有两条级联路径吗?
我真的希望通过数据注释进行此设置。但是流畅的API也很好。但我无法弄清楚如何实现这一目标。
任何帮助都将不胜感激。
相关问题