1

我已经在我们当前服务层的数据访问层上实现了存储库模式。

我们有一个对象模型,其中同一类“历史记录”映射到多个对象(目前是 6 个,但很快会更多!)

使用 linq to sql 的部分最佳实践不是为 db 中的每个表都有一个 dbml 文件,而是将其分解,这样在创建上下文时不会对性能造成巨大影响。

不幸的是,分隔对象的逻辑位置将历史注释留在了 5 个不同的 DBML 文件中。当 linq 生成器创建类时,它会在不同的命名空间中生成不同的类。

我在域模型中有一个历史笔记对象,但我不想每次使用历史笔记时都将域对象模型重新映射到数据模型中。

我不想做的一件事是将数据的“读取”分解为多个查询。

有没有一种方法可以将历史记录映射到多个数据模型中,但只编写一次映射?

谢谢

皮特

解决方案

感谢您的帮助,我想我将回到所有数据表的一个数据上下文。

设置多个模型所涉及的变通方法不值得代码的额外复杂性和潜在的脆弱性。必须编写相同的左手、右手代码来映射历史笔记是太多的工作和太多的地方来保持代码同步。

谢谢大家的输入

4

2 回答 2

1

使用 linq to sql 的部分最佳实践不是为 db 中的每个表都有一个 dbml 文件,而是将其分解,这样在创建上下文时不会对性能造成巨大影响。

你是从哪里听来的?我不同意。DataContext 通常是一个相当轻量级的对象,与表的数量无关。

有关涉及多个数据上下文的问题的分析,请参见此处:

LINQ to SQL:单个数据上下文还是多个数据上下文?
http://craftycodeblog.com/2010/07/19/linq-to-sql-single-data-context-or-multiple/

在我看来,每个数据库应该有一个数据上下文。 这也将解决您的映射问题。

另请参阅LINQ to SQL:每个项目的多个/单个 .dbml?

于 2010-08-05T04:05:14.867 回答
0

一种选择可能是将历史记录放在他们自己的数据上下文中,并将该对象与模型其余部分之间的关​​系保持为“id”(因此只是数据库中的外键)。无论如何我都会这样做。

于 2010-08-05T16:40:29.983 回答