0

我需要将数据从一个数据库传输到另一个数据库。目标数据库包含的数据量比源数据库少得多,每个表只是源表列的一个子集。我刚刚创建了目标 DBML,我得到了正确的编译错误,因为 L2S 数据类型(在目标 DBML 中)与源 DBML 中的 L2S 数据类型相同。

有没有办法在数据上下文之间共享这些类型?如果没有,有没有办法将源类型转换为目标类型,这样我就不必在保存到目标数据库之前创建映射器来将每个源类型映射到目标类型?

需要明确的是,在源 DBML 中,我只包含必要的列。这就是为什么源类型和目标类型完全相同,但它们属于它们自己的 DBML。

这个完全相同的表在两个 DBML 中:

在此处输入图像描述

这个问题一直很难正确表达。另一种问这个问题的方法是:“我可以从源表中获取数据,并将其保存到目标数据库中,只使用源 DBML 中的一种类型吗?”

4

1 回答 1

2

正如@David 建议的那样,在不同的命名空间中创建 DBML,然后使用 Automapper 或编写一些生成映射的代码(根据您的要求,这真的很容易)。

有没有办法在数据上下文之间共享这些类型?

不。

如果没有,有没有办法将源类型转换为目标类型,这样我就不必在保存到目标数据库之前创建映射器来将每个源类型映射到目标类型?

您必须创建映射 - 然而,这真的很容易(属性具有相同的名称、类型等)。我什至认为没有 Linq2Sql 或任何其他 ORM 会更容易。恕我直言,您应该删除所有约束、FK 等,在 SQL 命令级别复制数据(自己生成此代码),然后重新创建所有约束。

于 2012-04-30T19:46:20.990 回答