0

私がやろうとしている非常に単純なマッピングがあります。NHibernate 3.0クックブックをフォローしていますが、FluentNHibernate.dllにNaturalId()メソッドがないという問題が発生しました。この本は私にこれを作ってもらいました:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using FluentNHibernate.Mapping;
using Eg.Core;

namespace Eg.FluentMappings.Mappings
{
    public class ProductMapping : ClassMap<Product>
    {
        public ProductMapping()
        {
            Id(p => p.Id)
                .GeneratedBy.GuidComb();
            DiscriminateSubClassesOnColumn("ProductType");
            Version(p => p.Version);
            NaturalId()
                .Not.ReadOnly()
                .Property(parentIsRequired => parentIsRequired.Name);
            Map(p => p.Description);
            Map(p => p.UnitPrice)
                .Not.Nullable();
        }
    }
}

コンパイルしようとすると、エラーが発生します。「NaturalId」という名前は現在のコンテキストに存在しません。別のdllなどがありませんか?

私は周りを見回して、たくさん見つけました。これは答えられているように見える質問ですが、map.NaturalId()またはを使用して動作させることができませんMap.NaturalId()SharpArchitecture / Fluent NHibernate

4

1 に答える 1

1

答えが見つかりました。理由はわかりませんが、NaturalId()でbaseキーワードを使用する必要があります。以下は私の改訂されたクラスです:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using FluentNHibernate.Mapping;
using Eg.Core;

namespace Eg.FluentMappings.Mappings
{
    public class ProductMapping : ClassMap<Product>
    {
        public ProductMapping()
        {
            Id(p => p.Id)
                .GeneratedBy.GuidComb();
            DiscriminateSubClassesOnColumn("ProductType");
            Version(p => p.Version);
            base.NaturalId()
                .Not.ReadOnly()
                .Property(parentIsRequired => parentIsRequired.Name);
            Map(p => p.Description);
            Map(p => p.UnitPrice)
                .Not.Nullable();
        }
    }
}
于 2012-06-13T18:48:17.323 に答える