Multiplicity constraint violated Entity framework 5
asp.net, asp.net-mvc, c#, entity-framework, sql-server
Solution
Are you trying to add the same `Result` to several users?
In that case this will fail because entity framework will realize the `Results` collection of the `Person` class as a foreign key from `Results` to `Persons`. The mapping will be the same as if you add a `Person` navigation property to the `Result` class.
If you want `Person` and `Result` to have a many-to-many relationship you have to add a `ICollection<Person> Persons` property to the `Results` class to make EF understand that.
Problem
Hello i have 3 classes Person, UserProfile(it inherits Person) and Results, a Person can have one or more results, when i try to add i a result to a person a i get the error mentioned in the title, my classes are bellow. Any help would be appreciated. ``` [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; } } ``` The UserProfile class ``` [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; } } ``` The result class ``` 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; } } ``` The problem function ``` public void AddResultForUser(int userId, Result result) { _ctx.Users.Single(u => u.Id == userId).Results.Add(result); } ``` Whenever after calling this function i call `_ctx.SaveChanges()` I get the fallowing error ``` Multiplicity constraint violated. The role 'Person_Results_Source' of the relationship 'Repository.Person_Results' has multiplicity 1 or 0..1. ``` Thank you.