假设我有一个包含国家/地区的实体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
我尝试将此映射为多对多组件集合,但这似乎被忽略,结果与一对多映射,无需查找。
是否可以在不为国家/地区定义单独实体的情况下进行映射?
答案 0 :(得分:1)
如果您拥有自己的国家/地区表和ID,则可以由多个组织使用。组件的定义是它的生命周期取决于拥有的实体。在您更改的模型中不是这样(您可以删除组织而不删除关联的国家/地区),因此国家/地区不再是组件。
使用一对多的组件或多对多的实体。