将NHibernate与查找表一起使用

时间:2010-03-05 15:23:27

标签: database nhibernate fluent-nhibernate lookup

如果数据库中有一组严格由字符串描述和ID组成的表,那么通过NHibernate加载这些表的最佳方法是什么?

假设我有一个三明治课,三明治有一个肉,一个奶酪和一个蔬菜,这三个东西是数据库中的查找表。它似乎是最符合NHibernate理念的

public class Meat { string name; int id; }
public class Cheese { string name; int id; }
public class Vegetable { string name; int id; }
public class Sandwich { Meat meat; Cheese cheese; Vegetable vegetable; }

但是在数据库中有几十个像这样的表,类似乎很快就会激增。假设我这样设置:

public class NameAndID { string name; int id; }
public class Sandwich { NameAndID meat; NameAndID cheese; NameAndID vegetable; }

这可行吗?如何在Fluent NHibernate中实现?

1 个答案:

答案 0 :(得分:1)

您需要另一列来确定类型。你可以使用枚举。那么你所有的查找都需要包含那个限制......

CreateCriteria<NameAndID>.Add(Restrictions.Eq("ntype", E.Meat)

但是,我更喜欢单独的表,因此您可以拥有更好的外键。否则,数据库限制中没有任何东西阻止你制作一个只有3块奶酪的三明治。