【问题标题】:EdmAssociationConstraint: : The number of properties in the Dependent and Principal Roles in a relationship constraintEdmAssociationConstraint: : 关系约束中的 Dependent 和 Principal Roles 中的属性数量
【发布时间】:2013-06-28 16:58:21
【问题描述】:

我有 EdmAssociationConstraint: : 关系约束中的从属和主要角色中的属性数量限制了 EF 5 中的此异常

我想使用数据注释来解决这个问题

public class Task
{
    [Key, Column(Order = 0)]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int TaskId { get; set;}
    public string Name { get; set; }
}

public class Trigger
{
    [Key, Column(Order = 0)]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int TriggerId { get; set; }
    public string Name { get; set; }

    [Key, Column(Order = 1)]
    public int TaskId { get; set; }

    [ForeignKey("TaskId")]
    public virtual Task Tasks { get; set; }
}

public class TriggerHistory
{
    [Key, Column(Order = 0)]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int TriggerHistoryId { get; set; }

    [Key, Column(Order = 1)]
    public int TaskId { get; set; }

    [ForeignKey("TaskId")]
    public virtual Task Task { get; set; }

    [Key, Column(Order = 2)]
    public int TriggerId { get; set; }

    [ForeignKey("TaskId")]
    public virtual Trigger Triggers { get; set; }

    public string Name { get; set; }
}

【问题讨论】:

    标签: .net entity-framework c#-4.0 entity-framework-4 ef-code-first


    【解决方案1】:

    您的 Trigger 类具有复合键(TriggerId、TaskId)。 但是您的 TriggerHistory 具有 Trigger 导航属性,其中 ForeignKey 仅使用 TaskId 属性定义。

    尝试在 Triggers 属性上更改 ForeignKey,如下所示:

    [ForeignKey("TriggerId,TaskId")]
    public virtual Trigger Triggers { get; set; }
    

    也许 Triggers 属性应该命名为“Trigger”,因为这不是 Trigger 对象的集合。

    【讨论】:

    • 我不知道您可以在 ForeignKey 属性中添加多个键。谢谢!
    猜你喜欢
    • 2014-11-17
    • 2016-02-11
    • 1970-01-01
    • 2012-07-30
    • 2022-01-06
    • 2021-08-03
    • 1970-01-01
    • 2014-12-18
    • 2016-07-02
    相关资源
    最近更新 更多