<地图> = IDictionary [英] <Map> = IDictionary

查看:112
本文介绍了<地图> = IDictionary的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有3个实体: 类用户{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>.但是我想获取Dictionary <string,UserUrl>,其中字符串键为UrlType.name. 有人知道怎么做吗?

I have 3 entities: class User {id,name...} class UserUrl {id,user_id,url,url_type_id} class UrlType {id,name} My mapping:
<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> >
So User.Urls is IDictionary<UrlType,UserUrl>. But I want to get Dictionary<string,UserUrl>, where string key is UrlType.name. Does anybody know how to do this?

推荐答案

我找出了目的.
映射:

I find out desition.
Mapping:

<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>

代码:

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;
  }
}

使用:

User curUser = FindById(2);  
string facebookUrl = curUser.Urls[UrlType.Facebook].Url; 

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

But It is spend more time to get ids of Urls types from DB

这篇关于&lt;地图&gt; = IDictionary的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆