すべての Entity インスタンスの一意のキーを生成して返すエンティティの抽象クラスがあります。キーの生成は少しコストがかかり、具体的なエンティティのプロパティ値に基づいています。キー生成に参加しているプロパティを既にマークしているKeyMemberAttribute
ので、必要なのは、装飾されたプロパティが変更EntityBase.Key
されるたびに = null にすることだけです。KeyMemberAttribute
したがって、次のような基本クラスを取得しました。
public abstract class EntityBase : IEntity
{
private string _key;
public string Key {
get {
return _key ?? (_key = GetKey);
}
set {
_key = value;
}
}
private string GetKey { get { /* code that generates the entity key based on values in members with KeyMemberAttribute */ } };
}
次に、具体的なエンティティを次のように実装しました
public class Entity : EntityBase
{
[KeyMember]
public string MyProperty { get; set; }
[KeyMember]
public string AnotherProperty { get; set; }
}
プロパティ値が変更されるたびKeyMemberAttribute
に を に設定する必要があります。EntityBase.Key
null