私は以下の団体を持っています。片方向から一対多の関係でReadOnlyエンティティを定義する方法はありますか?
public class Country{
public virtual int Id { get; private set; }
public virtual string Name { get; set; }
public virtual IList<City> Cities { get; set; }
}
public class City{
public virtual int Id { get; private set; }
public virtual string Name { get; set; }
public virtual Country Country {
get { return _country; }
}
private readonly Country _country;
}
しかし、ユーザーが
- _country.Name = "newCountry" を行うことができ、次のコードを与えられました。
- _country.Cities.Add(AnotherCity);
- _country.Cities [0] .nameの= "newCity" 4. _country.Cities [0] .Country.Name = "中にエラー"
1-3はOKですが、私の問題がでています#4。私は、これを双方向の1対多のマッピングにする必要がありますが、市のエンティティの国(すべてのプロパティを含む)の参照は読み取り専用であることが理想です。私はそれができる方法はありますか? (私は何か間違ったことをやっているかどうかわからない、またはこれが不可能である)私は
public interface IReadOnlyCountry {
int Id { get; }
string Name { get; }
IList<City> Cities { get; }
}
public class Country : IReadOnlyCountry{
public virtual int Id { get; private set; }
public virtual string Name { get; set; }
public virtual IList<City> Cities { get; set; }
}
public class City {
public virtual int Id { get; private set; }
public virtual string Name { get; set; }
public virtual IReadOnlyCountry Country {
get { return _country; }
}
private readonly Country _country;
}
を試みたが、そのは、NHibernateのために働いていません。どのようにこのような状況に対処していますか?
なぜあなたは2つのエンティティ(国とCountryInfo)を作成せず、両方ともNHibernate ..を使用してマップされ、都市のフィールドのタイプとしてCountryInfoを使用します –
試しました。うまく動作します。私は国がReadOnlyCountryに機能性を追加していると思っていました。したがって、ReadOnlyCountryをBase型にすることは意味があります。 –