你好,我有 3 个类 Person、UserProfile(它继承了 Person)和 Results,一个 Person 可以有一个或多个结果,当我尝试将结果添加到一个人时,我得到了标题中提到的错误,我的类是吼叫。任何帮助将不胜感激。
[Table("People")]
public class Person : IPerson
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Name
{
get
{
return FirstName + " " + LastName;
}
set{}
}
public string Email { get; set; }
public DateTime? LastModified { get; set; }
public virtual ICollection<Result> Results { get; set; }
}
用户配置文件类
[Table("UserProfile")]
public class UserProfile : Person
{
public UserProfile()
{
Faculty = new Faculty();
Projects = new Collection<Project>();
}
public string UserName { get; set; }
public string CNP { get; set; }
public virtual Faculty Faculty { get; set; }
public virtual ICollection<Project> Projects { get; set; }
}
结果类
public abstract class Result:INamedEntity
{
protected Result()
{
ResultType = new ResultType();
}
public int Id { get; set; }
public string Name{get;set;}
public virtual ResultType ResultType { get; set; }
public DateTime? LastModified { get; set; }
}
问题函数
public void AddResultForUser(int userId, Result result)
{
_ctx.Users.Single(u => u.Id == userId).Results.Add(result);
}
每当调用此函数后我调用 _ctx.SaveChanges()
我得到了休闲错误
Multiplicity constraint violated. The role 'Person_Results_Source' of the relationship 'Repository.Person_Results' has multiplicity 1 or 0..1.
谢谢。
最佳答案
您是否尝试添加相同的 Result
给几个用户?
在那种情况下,这将失败,因为 Entity Framework 将实现 Results
收藏Person
类作为来自 Results
的外键至 Persons
.映射将与添加 Person
相同。导航属性到 Result
类。
如果你想要Person
和 Result
要建立多对多关系,您必须添加 ICollection<Person> Persons
属性(property)给Results
让 EF 理解这一点的类。
关于c# - 违反了多重约束 Entity Framework 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20034003/