我的数据库中有一个字段,用于存储整数值并包含在列表中选择的按位值的总和。例如:如何在NHibernate中将按位总和映射到列表中
VALUE DESCRIPTION
----- -----------
1 Option 1
2 Option 2
4 Option 3
8 Option 4
比方说,选项2 & 4被选出,所以存储在字段中的值是10
我有一个很难搞清楚(如果它甚至有可能)如何在hbm.xml文件中表示此项。
这里是我想要做一个普通的例子:
产品表列
Id, int
Name, varchar(25)
Services, int
服务表列
Id, int
Name, varchar(25)
Product.cs
public class Product
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual IList<Service> Services { get; set; }
}
Service.cs
public class Service
{
public virtual int Id { get; set; } // bit values: 1, 2, 4, 8, ...
public virtual string Name { get; set; }
}
Product.hbm.xml
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="AppNS" namespace="AppNS">
<class name="Product" table="Product">
<id name="Id" column="Id" type="int">
<generator class="native"/>
</id>
<property name="Name" column="Name" type="string"/>
<????? name="Services" column="Services" type="AppNS.Service"/>
</class>
</hibernate-mapping>
Service.hbm.xml
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="AppNS" namespace="AppNS">
<class name="Service" table="Service">
<id name="Id" column="Id" type="int">
<generator class="native"/>
</id>
<property name="Name" column="Name" type="string"/>
</class>
</hibernate-mapping>
我需要帮助<? >部分在Product.hbm.xml文件中。
- 编辑 -
最后,我希望能够调用load()方法来获得我的产品型号后面。
Configuration cfg = new Configuration();
...
ISessionFactory sf = cfg.BuildSessionFactory();
using (ISession s = sf.OpenSession())
{
Product product = s.Load<Product>(100);
foreach(Service service in product.Services)
{
Console.WriteLine(service.Name);
}
}
输出将是:
Option 2
Option 4
我的目标是能够调用ISession.Load()方法从数据库返回我的Product对象。本产品只能根据数据库字段中的整数值选择列表中的服务。我没有看到你的答案可以让我在那里。 – DanHarrigan