使用LINQ将数据从一个表复制到另一个表上的另一个表?

时间:2015-01-05 23:29:55

标签: c# linq-to-sql

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

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

我得到的错误是"不明确的构造函数引用"。这是因为当我试图创建一个新的Circuit对象来写入沙盒电路表时,我不知道我在谈论哪一个:开发环境中的电路或Sandbox环境中的电路。

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

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

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();
    }
}

2 个答案:

答案 0 :(得分:1)

两个Circuit类都在不同的名称空间中,我们只能猜测它们是什么,但你会完全限定名称前缀为名称空间:

var circuit = new SomeNamespace2.Circuit();

如果声明:

namespace SomeNamespace2
{
    public class Circuit {...

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

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

通常情况下,您可以按属性执行此属性或使用类似AutoMapper的内容:

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

答案 1 :(得分:1)

更改

var circuit = new Circuit();

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

然后一次映射一个属性