0

移行で次のエラーが表示されます。

Person_EventModerator_Target: : 関係 'Person_EventModerator' のロール 'Person_EventModerator_Target' では多重度が無効です。依存ロール プロパティはキー プロパティではないため、依存ロールの多重度の上限は '*' である必要があります。

これが私のモデルです(注:基本エンティティはすべてのモデルの主キーを保持しています):

public class EventModerator : BaseEntity
{
    ......

    // foreign keys
    public int PersonId { get; set; }

    // associations
    [ForeignKey("PersonId")]
    public Person Person { get; set; }

}


 public class Person : BaseEntity
  {
    public Person()
    {
    ....
    // association
    public virtual EventModerator EventModerator { get; set; }

}

私のマッピング:

        modelBuilder.Entity<Person>()
            .HasOptional(e => e.EventModerator)
            .WithRequired(e => e.Person);

これは 1 対 0.1 の関係です。

誰でも私のエラーを指摘できますか?

4

2 に答える 2

0

あなたの答えは 1 対 0.1 の関係を生み出しません。Personデータベースのテーブルで生成された別のキーがあり、それは nullableEventModerator_Idです。

1 から 0.1 にするには、従属EventModerator主キーも外部キーである必要があります。

[Key]に属性を追加できますPersonId

[Key]
public int PersonId { get; set; }

または、BaseEntity派生Idプロパティ(デフォルトの規則では主キー)を持つ可能性があるため、プロパティを削除してPersonId外部キーをIdプロパティにリンクするだけです。

//public int PersonId { get; set; }

// associations
[ForeignKey("Id")]
public Person Person { get; set; }
于 2014-08-14T03:56:52.697 に答える
0

OK、これは機能しましたが、率直に言って、「.WithMany()」の必要性がわかりません

    internal static void Map(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<EventModerator>()
            .HasRequired(e => e.Person)
            .WithMany()
            .HasForeignKey(e => e.PersonId)
            .WillCascadeOnDelete(false);   
    }
于 2014-08-13T18:30:50.800 に答える