首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 ><Map> = IDictionary

<Map> = IDictionary
EN

Stack Overflow用户
提问于 2009-08-05 10:07:51
回答 2查看 299关注 0票数 0

我有3个实体:类User {id,name...}类UserUrl {id,user_id,url,url_type_id}类UrlType {id,name}我的映射:

<class name="User" table="Users" lazy="false">

<id name="id" type="Int32" column="id">

<generator class="identity" />

</id>

<property name="name" column="name" type="String"/>

<map name="Urls" table="UserUrl">

<key column="user_id"></key>

<index-many-to-many class="UrlType" column="url_type_id"/>

<one-to-many class="UserUrl"/>

</map>

</class>

<class name="UserUrl" table="UserUrl">

<id name="id" type="Int32" column="id">

<generator class="identity"/>

</id>

<property name="user_id" column="user_id" type="Int32"/>

<many-to-one name="UrlType" column="url_type_id" class="UrlType"/>

<property name="Url" column="url" type="String" not-null="true"/>

</class> >

所以User.Urls就是IDictionary<UrlType,UserUrl>。但我想要获取字典键,其中字符串键是UrlType.name。有人知道怎么做吗?

EN

回答 2

Stack Overflow用户

发布于 2009-08-05 13:00:58

NHibernate将为您提供一个集合接口,在本例中为IDictionary,因为它的实现将涉及代理和缓存,您不会想知道细节。所以你得不到字典。

我的问题是,你为什么需要一个字典,你通过IDictionary接口访问所有的数据,一个具体的类会提供什么额外的功能?

票数 0
EN

Stack Overflow用户

发布于 2009-08-13 09:09:14

我发现了desition。

映射:

代码语言:javascript
运行
复制
<class name="User" table="Users" lazy="false">
  <id name="id" type="Int32" column="id">
    <generator class="identity" />
  </id>
  <property name="name" column="name" type="String"/>
  <map name="Urls" lazy="true" cascade="all-delete-orphan" inverse="true">
     <key column="user_id"></key>
     <index column="im_type_id" type="Int32"/>
     <one-to-many class="UserUrl"/>
   </map>
</class>
<class name="UserUrl" table="UserUrl">
   <id name="id" type="Int32" column="id">
    <generator class="identity"/>
   </id>
   <property name="user_id" column="user_id" type="Int32"/>
   <property name="UrlType" column="url_type_id" type="Int32" not-null="true" />
   <property name="Url" column="url" type="String" not-null="true"/>
</class>

代码:

代码语言:javascript
运行
复制
public sealed class UrlType
{
  private const string _Facebook = "Facebook";  
  private const string _Myspace = "Myspace";   
  private const string _Youtube = "Youtube";

  public static readonly int Facebook;
  public static readonly int Myspace;
  public static readonly int Youtube;
  static UrlType()
  {
     Facebook = FindByName(_Facebook).Id;
     Myspace = FindByName(_Myspace).Id;
     Youtube = FindByName(_Youtube).Id;
  }
}

使用:

代码语言:javascript
运行
复制
User curUser = FindById(2);  
string facebookUrl = curUser.Urls[UrlType.Facebook].Url; 

但是要花费更多时间从数据库获取Urls类型的It

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1232303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档