流利的NHibernate NaturalId缺少?

时间:2012-06-13 18:22:50

标签: c# orm fluent-nhibernate

我正在尝试做一个非常简单的映射。我正在关注NHibernate 3.0 Cookbook,我遇到了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

1 个答案:

答案 0 :(得分: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();
        }
    }
}