我正在尝试做一个非常简单的映射。我正在关注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
答案 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();
}
}
}