2
我有两个表,可以说店和部门。流利的nHibernate映射问题
ShopTable
ShopId
ShopName
DepartmentTable
DepartmentId
ShopId
Name
Type
好了,现在我映射shoptable到店铺等级
public class Shop
{
public virtual int ShopId {get; set;}
public virtual string ShopName {get; set;}
public virtual Department Toys { get; set; }
public virtual Department Hardware { get; set; }
public virtual Department Food { get; set; }
}
public class Department
{
public virtual int DepartmentId { get; set; }
public virtual int ShopId { get; set; }
public virtual string Name { get; set; }
public virtual DepartmentType Type { get; set; }
}
如何映射玩具硬件和食品?
public class ShopMap : ClassMap<Shop>
{
Id(x => x.ShopId);
Map(x=> x.ShopName);
// How do I map these according to the DepartmentType enum?
Map(x=> x.Toys);
Map(x=> x.Hardware);
Map(x=> x.Food);
}
public class DepartmentMap : ClassMap<Department>
{
Id(x => x.DepartmentId);
Map(x=> x.ShopId);
Map(x=> x.Name);
Map(x=> x.Type);
}
是啊,我知道,我可以有对象的名单,但你说,它不是”是否有可能以任何方式将它们作为单独的对象? 会帮助我很多,因为如果他们在列表中,我将不得不循环每次访问其中的一个列表。 – TuomasK 2011-05-26 19:45:28
您无法避免搜索您想要的特定部门的馆藏。推荐的类将允许NHibernate为您的表结构生成正确的SQL。你可以在你的类的属性或方法上封装集合上的特定查询。这些方法或属性不会在NHibernate中映射,因此它们不会影响数据库操作。例如:public department toys {get {Departments.FirstOrDefault(d => d.DepartmentId == ToysDepartmentId); }} – 2011-05-26 21:11:41
这有点奇怪,因为使用集合你可以这样做。 HasMany(x => x.Departments).KeyColumn(“ShopId”)。其中(y => y.Type == DepartmentType.Toys); – TuomasK 2011-05-27 05:36:59