您如何处理模型类中的外键关系
Posted
技术标签:
【中文标题】您如何处理模型类中的外键关系【英文标题】:How do you handle Foreign Key Relationships in model classes 【发布时间】:2009-03-21 12:14:42 【问题描述】:假设我有一个带有 FK CompanyId 的项目表,它将项目与公司表相关联。
在您的 Project 模型中,您是添加 Company 对象,还是仅添加 CompanyId 属性并在代码中需要时检索 Company?
【问题讨论】:
【参考方案1】:这取决于您要使用它做什么。例如,如果您有一个包含创建项目所需的所有字段的 UI,并且在该 UI 中您选择了将项目与下拉框相关联的公司,那么可能只关联键将是合理有效的做法。
我更愿意根据“纯度”来附加公司对象,但如果我从来没有遇到过我实际上会对那个客户做任何事情的情况,我只会使用密钥。我不知道您使用的是什么语言/平台,但您可以考虑某种延迟加载方案,其中公司对象基于 JIT 填充其数据。
【讨论】:
我意识到我的答案实际上几乎是 Phil 的答案的重复答案,但为时已晚。来自我的 +1【参考方案2】:使用 LinqToSQL 时,外键关系会自动在 SQLMetal 生成的业务实体中建模。实体类型具有以子或父类型命名的子属性或父属性。您可以使用它们来检索相关的业务实体。
这些属性支持延迟加载,因此您各自的子实体或父实体仅在需要时从数据库加载。
【讨论】:
我知道,我实际上并没有直接使用 linqtosql 模型,而是将它们包装在单独的类中,我希望它独立于 linqtosql 并提供 nhibernate 支持等。以上是关于您如何处理模型类中的外键关系的主要内容,如果未能解决你的问题,请参考以下文章