【问题标题】:NHibernate Conditional MappingNHibernate 条件映射
【发布时间】:2009-07-27 12:33:13
【问题描述】:

我最近负责一个新项目,用于存储我们的分析数据。我想试一试ORM;映射似乎并不困难,但这个问题让我很烦恼。

该数据库将为 Google Analytics、Quantcast 和任何未来的分析提供商存储数据。我几乎得到了需要使用的模式。他们希望它非常通用,直到我存储矩阵,因为我们为每个提供者跟踪不同的矩阵。

表格布局是这样的:

tblClient - 存储所有客户端网站。
tblProfile - 1 个或多个属于一个客户端。存储配置文件数据,例如此配置文件正在使用的提供商以及 profile_type。
tblProvider - 存储关于配置文件是 GoogleAnalytics、Quantcast 还是其他分析配置文件的数据。
tblProfile_Type - 客户端站点的轨道类型。我们将客户网站分为不同的部分。在此处进行跟踪。

当我需要将配置文件表链接到 metrix 表时,问题就出现了。在这张图上,我只有一个用于谷歌的,但还有其他的。我需要它基于配置文件表中 Provider_Type 的 FK 列进行链接。这可能吗?

【问题讨论】:

  • 那么您将拥有多个 metrix 表,而将配置文件加入哪一个取决于提供者 ID?

标签: c# .net database nhibernate orm


【解决方案1】:

查看“任何”类型映射。

Any Type Mapping

【讨论】:

    【解决方案2】:

    如果我理解正确,您在 tblAny_Profile 和 tblAny_Provider 之间存在多对一关系。 可以通过在之间建立一对多关系来“反转”这种关系 tblAny_Provider 和 tblAny_Profile? 这样,您将在具有许多 tblAny_Profile 实体实例的 tblAny_Provider 实体中拥有 Bag 或 List 属性。

    【讨论】:

    • 问题是根据配置文件的类型创建与 Google_Metric_Set 或 Quantcast_Metric_Set(图中未显示)的正确关系。
    猜你喜欢
    • 2011-04-10
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 2012-11-23
    • 2010-10-05
    • 2011-06-23
    • 1970-01-01
    相关资源
    最近更新 更多