仅在一个方向上流利的NHIBERNATE参考



我试图弄清楚如何使Nhibernate与1到许多到许多到1类的关系一起使用。我有以下设置,但是它似乎不起作用

public class Product {
     public Guid Id {get;set;}
     public string Name {get;set;}
     public string SKU {get;set;}
     public decimal MSRP {get;set;}
}
public class Order {
     public Guid Id {get;set;}
     public DateTime CreatedOn {get;set;}
     public IList<OrderLine> Lines {get;set;}
}
public class OrderLine {
     public Guid Id {get;set;}
     public Product Product {get;set;}
     public int Qty {get;set;}
     public decimal Price {get;set;}
}
public class ProductMap : ClassMap<Product>
{
     Id(x => x.Id);
     Map(x => x.Name);
     Map(x => x.SKU);
     Map(x => x.MSRP);
}
public class OrderMap : ClassMap<Order>
{
     Id(x => x.Id);
     Map(x => x.CreatedOn);
     // This doesn't seem to work as I get an error that OrderLine is not mapped
     HasMany(x => x.Lines);
}
public class OrderLineMap : ClassMap<OrderLine>
{
     Id(x => x.Id);
     Map(x => x.Qty);
     Map(x => x.Price);
     // This doesn't seem to work as I get an error the Product isn't mapped         
     // An association from the table OrderLine refers to an unmapped class: Product
     References(x => x.Product);
}
public static class NHibernateUtils
{
    public static ISessionFactory CreateSessionFactory(IPersistenceConfigurer persistenceConfigurer)
    {           
        return Fluently.Configure()
            .Database(persistenceConfigurer)
            .Mappings(m =>
            {
                m.FluentMappings.Add<ProductMap>();
                m.FluentMappings.Add<OrderLineMap>();
                m.FluentMappings.Add<OrderMap>();
            })
            .ExposeConfiguration(c => new SchemaExport(c).Create(false, true))
            .BuildConfiguration()
            .BuildSessionFactory();
    }
}

所以我很好奇 - 我在做什么错。注意:我不想将逆属性添加到我的对象中。因此,订单线不需要对订单的参考,产品不应需要参考订单集合。我是否达到了限制?或只是缺少简单的东西?

好吧,我弄清楚了主要问题 - 我缺少propertyref((调用。看起来这是必需的吗?如果是这样,是否应该更具体?

最新更新