나는 데이터베이스에 정수 값을 저장하고리스트에서 선택된 비트 값의 합계를 담고있는 필드를 가지고있다. 예를 들어 :비트 sum을 NHibernate의리스트에 매핑하는 법
VALUE DESCRIPTION
----- -----------
1 Option 1
2 Option 2
4 Option 3
8 Option 4
는 이제 & 4 선택이 옵션을 가정 해 봅시다, 그래서 필드에 저장된 값은 내가 힘든 시간을 알아내는 데 문제 10
것 (그것도 가능하다면) 방법 hbm.xml 파일에서이를 나타냅니다.
Id, int
Name, varchar(25)
Product.cs을
제품 테이블 열
Id, int
Name, varchar(25)
Services, int
서비스 테이블 열 : 여기
내가 할 노력하고있어의 일반적인 예입니다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>
,745,<과 관련하여 도움이 필요합니까? > 부분은 Product.hbm.xml 파일에 있습니다.
--EDIT--
는 궁극적으로, 나는 다시 내 제품 모델을 얻을 수있는로드() 메서드를 호출 할 수 있어야합니다.
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