<地图> = IDictionary [英] <Map> = 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
这篇关于<地图> = IDictionary的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!