如何在没有单独实体的情况下映射多对多查找值?

时间:2011-10-04 20:14:06

标签: nhibernate nhibernate-mapping

假设我有一个包含国家/地区的实体Organization。我并不关心国家,除了用组织数据显示它,可能用于过滤,这就是全部。在我的对象模型中,我希望使用简单string来表示国家/地区:

class Organization
{
    ...
    public virtual IList<string> Countries { get; set; }
    ...
}

使用仅包含国家/地区名称元素的组件集合,很容易映射为一对多。这将产生如下表:

OrganizationCountries
-----------------------
Organization_id int
CountryName string

但是为了避免大量冗余并且能够轻松更新国家/地区名称,我想将国家/地区名称保存在单独的表中(如查找表),以便在数据库中我有:

OrganizationCountries
-----------------------
Organization_id int
Country_id int

Country
-----------------------
Country_id int
CountryName string

我尝试将此映射为多对多组件集合,但这似乎被忽略,结果与一对多映射,无需查找。

是否可以在不为国家/地区定义单独实体的情况下进行映射?

1 个答案:

答案 0 :(得分:1)

如果您拥有自己的国家/地区表和ID,则可以由多个组织使用。组件的定义是它的生命周期取决于拥有的实体。在您更改的模型中不是这样(您可以删除组织而不删除关联的国家/地区),因此国家/地区不再是组件。

使用一对多的组件或多对多的实体。