【问题标题】:How do you handle Foreign Key Relationships in model classes您如何处理模型类中的外键关系
【发布时间】:2009-03-21 12:14:42
【问题描述】:

假设我有一个带有 FK CompanyId 的项目表,它将项目与公司表相关联。

在您的 Project 模型中,您是添加 Company 对象,还是仅添加 CompanyId 属性并在代码中需要时检索 Company?

【问题讨论】:

    标签: .net asp.net linq-to-sql orm


    【解决方案1】:

    这取决于您要使用它做什么。例如,如果您有一个包含创建项目所需的所有字段的 UI,并且在该 UI 中您选择了将项目与下拉框相关联的公司,那么可能只关联键将是合理有效的做法。

    我更愿意根据“纯度”来附加公司对象,但如果我从来没有遇到过我实际上会对那个客户做任何事情的情况,我只会使用密钥。我不知道您使用的是什么语言/平台,但您可以考虑某种延迟加载方案,其中公司对象基于 JIT 填充其数据。

    【讨论】:

    • 我意识到我的答案实际上几乎是 Phil 的答案的重复答案,但为时已晚。来自我的 +1
    【解决方案2】:

    使用 LinqToSQL 时,外键关系会自动在 SQLMetal 生成的业务实体中建模。实体类型具有以子或父类型命名的子属性或父属性。您可以使用它们来检索相关的业务实体。

    这些属性支持延迟加载,因此您各自的子实体或父实体仅在需要时从数据库加载。

    【讨论】:

    • 我知道,我实际上并没有直接使用 linqtosql 模型,而是将它们包装在单独的类中,我希望它独立于 linqtosql 并提供 nhibernate 支持等。
    猜你喜欢
    • 2010-10-09
    • 2020-06-19
    • 2022-01-01
    • 2017-12-05
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    相关资源
    最近更新 更多