0

我现在有一个预约模式,如:NHibernate的映射许多孩子实体一个实体

public class RoomBooking : Entity, IBooking 
{ 
    public virtual Client Client { get; set; } 
    public virtual Address Address { get; set; } 
    public virtual IList<BookingPeriod> BookingPeriods{get;set;}... 


public class BookingPeriod : Entity 
{ 
    public virtual IEnumerable<IBooking> Bookings { get; set; } 
    public virtual DateTime StartTime { get; set; } 
    public virtual DateTime EndTime { get; set; }... 

预订有许多与BookingPeriods一对多的关系。有三种不同类型的预订可以制作,而且每种都有相关的类型。

将NHibernate映射到最佳方式是什么?我目前正在使用S#arp,它利用了Fluent NHibernate的AutoMapping功能。这会给出Bookings属性上的错误,因为它试图引用未映射的类(IBooking)。

+0

嗨大卫,弄来有机会看我的答案?只是想知道它是否有帮助? – Richard 2010-08-31 08:45:11

回答

1

如果您正在使用流利的NHibernate的,你可以做到这一点,它指定类名要映射的预订量,而不是Automapper试图映射到接口IBooking:

public class RoomBooking : Entity, IBooking 
{ 
    public virtual Client Client { get; set; } 
    public virtual Address Address { get; set; } 
    public virtual IList<BookingPeriod> BookingPeriods { get; set; } 

} 

public class RoomBookingMap : EntityMap<RoomBooking> 
{ 
    public RoomBookingMap() 
    { 
     Map(x => x.Client); 
     Map(x => x.Address); 
     HasManyToMany(x => x.BookingPeriods); 
    } 

} 

public class BookingPeriod : Entity 
{ 
    public virtual IEnumerable<IBooking> Bookings { get; set; } 
    public virtual DateTime StartTime { get; set; } 
    public virtual DateTime EndTime { get; set; } 
} 

public class BookingPeriodgMap : EntityMap<BookingPeriod> 
{ 
    public BookingPeriodgMap() 
    { 
     Map(x => x.StartTime); 
     Map(x => x.EndTime); 
     HasManyToMany<RoomBooking>(x => x.Bookings); 
    } 

} 
public class EntityMap<T> : ClassMap<T> where T : Entity 
    { 
     public EntityMap() 
     { 
      Id(x => x.Id) 
       .UnsavedValue(-1) 
       .Column("id"); 

     } 


    }