我的數據庫中有一個字段,用於存儲整數值幷包含在列表中選擇的按位值的總和。例如:如何在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