我正在使用现有的多语言数据库使用 LinqToSQL,但在映射一个相当重要的一对一关系时遇到了问题,所以我怀疑我在数据库设计中错误地使用了该功能。
假设有两个表,Category 和 CategoryDetail。Category 包含 CategoryId (PK)、ParentId 和 TemplateId。CategoryDetail 包含 CategoryId (FK)、LanguageId、Title 和 Description(使用适当的语言),以及 CategoryId 和 LanguageId 的组合 PK。
如果我将这些表拖放到 LinqToSQL 设计器中,则生成的对象模型将具有 Category 和 CategoryDetail 对象的集合,这绝不应该是这种情况。我希望能够在 DataContext 级别对 LanguageId 进行过滤,这意味着整个类别都封装在 Category.CategoryDetail 中,而不是所有语言版本都封装在 Category.CategoryDetails 中。
这个数据库在我的旧对象库(一个老式的自定义 BOL 和 DAL)上运行良好,但我担心 LinqToSQL 需要更改它才能给我所需的结果。
使这种关系(和语言过滤)尽可能无缝的最佳方法是什么?