私はコードファーストアプローチでEF5を使用しています。ここで、いくつかの異なるコード(アドレスコード、ミディアムコードなど)が必要な「コード」テーブルを定義しようとしています。このテーブルには、ID(Guid)、Name(String)、Description(String)、および識別子(この場合、コードのタイプのようなもの:アドレスコード、メディアコードなど)のプロパティがあります。
そこで、次の基本クラスを定義しました。
public abstract class Code : EntityBase
{
public string Name { get; set; }
public string Beschreibung { get; set; }
}
次に、コードから2つのクラスを派生させました
public class AddressCode : Code {}
public class MediumCode : Code {}
クラスEntityBaseは抽象であり、Idプロパティを定義するだけで、すべてのPOCOクラスに使用します...
目標は、AddressCodeをアドレスPOCOクラスのプロパティとして使用できるようにすることです。
public class Adresse : EntityBase
{
#region Properties
public string Name1 { get; set; }
public virtual AddressCode AddressCode { get; set; }
#endregion
}
今の問題は、EFにそれをどのように説明できるかということです。誰でも助けることができますか?
ありがとうマルコ
ご回答有難うございます!
私はあなたが言ったようにそれをやろうとしました。残念ながら、EntityBaseクラスが原因でエラーが発生します。
public abstract class EntityBase
{
#region Properties
public virtual Guid Id { get; set; }
public virtual bool IsValid
{
get
{
{
return Validate();
}
}
}
[NotMappedAttribute]
public virtual IList<ValidationFailure> ValidationFailures { get; set; }
#endregion
#region Methods
private bool Validate()
{
var validatorFactory = new AttributedValidatorFactory();
IValidator validator = validatorFactory.GetValidator(GetType());
if (validator == null)
{
return true;
}
ValidationResult validationResult = validator.Validate(this);
ValidationFailures = validationResult.Errors;
return validationResult.IsValid;
}
#endregion
}
エラーメッセージは次のとおりです。このタイプは、このプロパティがマップされているタイプ'Entities.EntityBase'を継承しているため、タイプ'Entities.AdresseCode'のプロパティ'ValidationFailures'でIgnoreメソッドを使用できません。このプロパティをモデルから除外するには、基本タイプでNotMappedAttributeまたはIgnoreメソッドを使用します。
ご覧のとおり、プロパティValidationFailuresをNotMappedとして定義しましたが、それでもこのエラーが発生します。アイデアはありますか?
ありがとうマルコ