我有以下型号,但我一直收到错误:
未处理的异常:System.InvalidOperationException:一种关系 发生了乘法约束违规:EntityReference可以 只有一个关联对象,但查询返回更多 比一个相关的对象。这是一个无法恢复的错误。
public class Tournament
{
public long TournamentId { get; set; }
public string Title { get; set; }
public virtual User CreatedBy { get; set; }
}
public class User
{
public int UserId { get; set; }
}
modelBuilder.Entity<Tournament>()
.HasRequired(t => t.CreatedBy)
.WithOptional()
.Map(c => c.MapKey("CreatedById")); // correct column name
答案 0 :(得分:5)
您的模型流畅配置条目不正确。将其更改如下
modelBuilder.Entity<Tournament>()
.HasRequired(t => t.CreatedBy)
.WithMany()
.Map(c => c.MapKey("CreatedById")); // correct column name
答案 1 :(得分:0)
如果您修改一下模型,那么管理外键会更好:
public class Tournament
{
public long TournamentId { get; set; }
public string Title { get; set; }
public virtual int CreatedById {get;set;}
public virtual User CreatedBy { get; set; }
}
你的映射看起来更像是这样:
modelBuilder.Entity<Tournament>()
.HasRequired(t => t.CreatedBy)
.WithMany()
.HasForeignKey(t => t.CreatedById); // correct column name
这样,当您创建新的锦标赛实体时,您只需要传递CreatedById而不是整个用户对象。
答案 2 :(得分:0)
如果您启用了延迟加载并且未将所有导航属性指定为可覆盖(C#Virtual),也会发生这种情况。