5

私は 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; }
}
4

1 に答える 1

7

Trigger クラスには複合キー (TriggerId、TaskId) があります。ただし、TriggerHistory には、ForeignKeyTaskId プロパティのみを使用して定義された Trigger ナビゲーション プロパティがあります。

ForeignKey次のように Triggers プロパティを変更してみてください。

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

Triggers プロパティは、Trigger オブジェクトのコレクションではないため、"Trigger" という名前にする必要があります。

于 2013-06-28T17:13:27.547 に答える