3

わかりました、これは二重の質問かもしれません。タイプUserのプロパティを含むクラスがあります。最初は、クラスクラスの両方をマッピングして両方をデータベースに格納していましたが、の目的はの一部であることが唯一の目的であるため、あまり意味がありませんでした。とにかく、今、私のマッピングは次のようになります:LocationUserLocationUserUserLocationUserLocationUser

public class UserMap : ClassMap<User>
    {
        public UserMap()
        {
            Id(x => x.Id).Access.ReadOnlyPropertyThroughLowerCaseField().GeneratedBy.Identity();
            Map(x => x.Location.Address);
            Map(x => x.Location.City);
            Map(x => x.Location.State);
            Map(x => x.Location.ZipCode);
        }
    }

しかし、「のゲッターが見つかりませんでした」というエラーが表示されますUserLocation.Address。NHibernateがまだの計算クラスを生成しているように見えるため、キャストエラーもたくさん発生しUserLocationます。したがって、問題は、マップされたカスタムクラスの内部からマップされていないカスタムクラスを参照するための最良の方法は何かということだと思います。

ああ、付け加えると、それはどこUserLocationにもマッピングされていないと確信しています。マッピングからそれへの参照を取り除こうとしましたが、計算されたクラスを実際のクラスに変換しようとすると、キャストエラーが発生します。なぜこの時点で計算された型が存在するのか理解できないでしょう。User

4

1 に答える 1

9

あなたが持っているのはcomponentです。コンポーネントは、NHibernate で個別にマップされます。

Fluent NHibernate マッピングは次のようになります。

public class UserMap : ClassMap<User>
{
    public UserMap()
    {
        Id(x => x.Id).Access.ReadOnlyPropertyThroughLowerCaseField()
            .GeneratedBy.Identity();

        Component(x => x.Location,
            loc =>
            {
                loc.Map(x => x.Address);
                loc.Map(x => x.City);
                loc.Map(x => x.State);
                loc.Map(x => x.ZipCode); 
            });
    }
}
于 2012-08-09T07:38:36.097 に答える