0

この質問はあちこちで尋ねられてきましたが、CodePlexでサポートされている回避策は機能しません。

誰かが最新の情報を持っていることを願っています。

私は、抽象基本クラスから直接派生した多数のエンティティを持つ EF5 Code First プロジェクトを持っています。その基本クラスから派生したクラスから派生したいくつかの新しいエンティティを作成した後、データベースが最初に作成されたときに、次のエラーが発生します。

You cannot use Ignore method on the property 'DisplayString' on type 
'Doctor' because this type inherits from the type 
'Contact' where this property is mapped. To exclude 
this property from your model, use NotMappedAttribute or Ignore 
method on the base type.

これが私のクラスです:

public abstract class AbsoluteBaseClass
{
  [NotMapped]
  public abstract string DisplayString { get; set; }
  ...
}

public class Contact : AbsoluteBaseClass
{
  [NotMapped]
  public override string DisplayString
  {
    get { return string.Format("{0} {1}", FirstName, LastName); }
    set { throw new System.NotImplementedException(); }
  }
  ...
}

public class Doctor : Contact
{
  ...
}

このような他のケース (ベースから派生したクラスから派生したクラス) があり、うまく機能していますが、これらの新しいクラスを追加すると、再び問題が発生しました。

また、OnModelCreating に .Ignore ディレクティブ (ベースの前の派生クラス) を追加しようとしましたが、どちらも違いはありません。

  modelBuilder.Entity<Doctor>().Ignore(p => p.DisplayString);
  modelBuilder.Entity<Contact>().Ignore(p => p.DisplayString);

AbsoluteBaseClass から派生したエンティティがあり、ほとんどの場合は機能するケースがいくつかありますが、別の派生クラスを追加すると、再び壊れてしまいます。これには韻も理由もないようです。

クラスを追加するときにこれを確実に機能させる方法について、アドバイスをいただければ幸いです。EF5 ソースに適用された修正について言及されているようです。次に、ソースをビルドします。誰かがそれを試して、それを機能させましたか?

アドバイスをありがとう!コーリー。

4

1 に答える 1