Fluent NHibernate映射-状态模式
我对NHibernate/FNH映射不太感兴趣,但我正在研究如何实现状态模式,并且喜欢Derick Bailey的文章: 我想这是很久以前的事了,所以映射代码已经过时了,有人能帮我更新FNH 1.1吗Fluent NHibernate映射-状态模式,nhibernate,fluent-nhibernate,nhibernate-mapping,state-pattern,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,State Pattern,我对NHibernate/FNH映射不太感兴趣,但我正在研究如何实现状态模式,并且喜欢Derick Bailey的文章: 我想这是很久以前的事了,所以映射代码已经过时了,有人能帮我更新FNH 1.1吗 public class OrderStatusMap: ClassMap<OrderStatus> { public OrderStatusMap() { CreateMap(); } public void CreateMap() {
public class OrderStatusMap: ClassMap<OrderStatus>
{
public OrderStatusMap()
{
CreateMap();
}
public void CreateMap()
{
DefaultAccess.AsProperty();
WithTable("OrderStates");
Id(s => s.Id).GeneratedBy.Assigned();
DiscriminateSubClassesOnColumn<string>("Name")
.SubClass<InProcessStatus>()
.IsIdentifiedBy(OrderStatus.InProcess.Name)
.MapSubClassColumns(x => { })
.SubClass<TotaledStatus>()
.IsIdentifiedBy(OrderStatus.Totaled.Name)
.MapSubClassColumns(x => { })
.SubClass<TenderedStatus>()
.IsIdentifiedBy(OrderStatus.Tendered.Name)
.MapSubClassColumns(x => { })
.SubClass<DeliveredStatus>()
.IsIdentifiedBy(OrderStatus.Delivered.Name)
.MapSubClassColumns(x => { })
Map(s => s.Name);
}
}
public类OrderStatusMap:ClassMap
{
public OrderStatusMap()
{
CreateMap();
}
public void CreateMap()
{
DefaultAccess.AsProperty();
WithTable(“订单状态”);
Id(s=>s.Id).GeneratedBy.Assigned();
DiscriminateSubClassesOnColumn(“名称”)
.第()子类
.IsIdentifiedBy(OrderStatus.InProcess.Name)
.MapSubassColumns(x=>{})
.第()子类
.IsIdentifiedBy(OrderStatus.Total.Name)
.MapSubassColumns(x=>{})
.第()子类
.IsIdentifiedBy(OrderStatus.Tendered.Name)
.MapSubassColumns(x=>{})
.第()子类
.IsIdentifiedBy(OrderStatus.Delivered.Name)
.MapSubassColumns(x=>{})
Map(s=>s.Name);
}
}
下面是他的文章,介绍代码的其余部分:
多谢各位
Paul我使用的是1.1,这是语法
public class OrderStatusMap: ClassMap<OrderStatus>
{
public OrderStatusMap()
{
DefaultAccess.AsProperty();
WithTable("OrderStates");
Id(s => s.Id).GeneratedBy.Assigned();
Map(s => s.Name);
DiscriminateSubClassesOnColumn<string>("Name");
}
}
public class InProcessStatusMap : SubclassMap<InProcessStatus>
{
public InProcessStatusMap()
{
DiscriminatorValue(OrderStatus.InProcess.Name);
}
}
public class TotaledStatusMap : SubclassMap<TotaledStatus>
{
public TotaledStatusMap()
{
DiscriminatorValue(OrderStatus.TotaledStatus.Name);
}
}
etc...
public类OrderStatusMap:ClassMap
{
public OrderStatusMap()
{
DefaultAccess.AsProperty();
WithTable(“订单状态”);
Id(s=>s.Id).GeneratedBy.Assigned();
Map(s=>s.Name);
区分子类别子列(“名称”);
}
}
进程状态映射中的公共类:子类映射
{
公共InProcessStatusMap()
{
鉴别器值(OrderStatus.InProcess.Name);
}
}
公共类TotaledStatusMap:子类映射
{
公共TotaledStatusMap()
{
鉴别器值(OrderStatus.TotaledStatus.Name);
}
}
等
您有什么特别的困难吗?大多数方法名称的前缀都被删除了(WithTable
->Table
),但这在intellisense中是可以发现的。我的intellisense说DiscriminateSubClassesOnColumn被贬低了,我应该使用SubclassMap…我不知道如何使用它。与其将基类和所有子类放在一个类映射中,基类有一个类映射,每个子类有一个单独的子类映射。鉴别器列定义仍在类映射中,但鉴别器值在每个子类映射中。