使用 LINQ 将数据从一个 table 复制到另一台服务器上的另一个?

Using LINQ to copy data from one table to another one on another server?

我在两台不同的服务器上有两个 table。它们完全相同,除了一台服务器上的 table 没有数据。

我想编写一个 LinqToSql 程序,将数据从一个 table 复制到另一个。只有大约 7k 条记录。这是一个运行一次的程序。

我得到的错误是 "Ambiguous constructor reference"。这是因为当我试图创建一个新的 Circuit 对象来写入沙箱 Circuits table 时,它不知道我在说哪个:Dev 上下文中的 Circuit 或沙箱中的 Circuit上下文。

我想我需要知道的是我是否可以使用别名或其他东西来区分每个上下文中的两个 Circuits 数据对象?

基本上,我只需要将一个 table 中的所有数据完全复制到另一台服务器上 table。

class Program
{
    static void Main(string[] args)
    {
        // set up data contexts
        var circuitsDev = new CircuitsDevDataContext();
        var circuitsSandbox = new CircuitsSandboxDataContext();

        // loop through each record in CircuitsDev data and write it to second table.
        foreach (var circuitData in circuitsDev.Circuits)
        {
            // create new sandbox circuit object
            // This is where error is.
            var circuit = new Circuit(); // <== ambiguous error 

            circuit = circuitData;

            circuitsSandbox.Circuits.InsertOnSubmit(circuit);
        }
        circuitsSandbox.SubmitChanges();
    }
}

两个电路 类 将位于不同的命名空间中,我们只能猜测它们是什么,但您可以使用命名空间前缀完全限定名称:

var circuit = new SomeNamespace2.Circuit();

如果声明:

namespace SomeNamespace2
{
    public class Circuit {...

您将遇到的问题是,由于您有两个电路 类,您不能在没有转换的情况下将一个分配给另一个。

circuit = circuitData;// unable to convert SomeNamespace1.Circuit to SomeNamespace2.Circuit

通常您可以 属性 通过 属性 或使用类似 AutoMapper 的东西:

circuit.Name = circuitData.Name;
circuit.Location = circuitData.Location;
//...

改变

var circuit = new Circuit();

var circuit = new circuitsSandbox.Circuit(); // basically use the full name of the class

然后一次映射一个属性