簡體   English   中英

違反多重性約束的實體框架5

[英]Multiplicity constraint violated Entity framework 5

您好,我有3個類Person,UserProfile(它繼承了Person)和Results,一個Person可以具有一個或多個結果,當我嘗試向某人添加ia結果時,如果標題中提到了錯誤,則我的類如下。 任何幫助,將不勝感激。

[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; }
}

UserProfile類

[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

在這種情況下,這將失敗,因為實體框架將實現Person類的Results集合作為從ResultsPersons的外鍵。 映射與將Person導航屬性添加到Result類相同。

如果希望PersonResult具有多對多關系,則必須將ICollection<Person> Persons屬性添加到Results類中,以使EF了解這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM