我想有相同的linq到sql对象/DB记录的两个副本。这可能吗?我试图通过从DB(通过下面的代码)制作两个记录来做到这一点,但这似乎只是为相同的底层DB记录创建别名。有可能把同一记录复印两份吗?我试图得到两个引用指向两个不同的对象。(如果这是不可能的,我想我可以只是克隆对象)
Dim one As Rec= (From l In myDB.table Where l.pk = 222 Select l).First
Debug.Print(one.ssn) //prints 666666666
Dim two As Rec = (From l In myDB.table Where l.pk = 222 Select l).First
two.ssn= "555555555" //this also changes one.ssn to "555555555", but I don't want this to happen
最直接的方法是克隆对象。这能最清楚地表达你的意图。唯一的其他方法(因为Linq to SQL没有分离方法)是创建一个全新的DataContext并使用您的对象调用InsertOnSubmit()。假设生成了主键,这应该可以工作,否则您必须自己设置一个新的主键。但这似乎有点像一个hack -我更喜欢第一个解决方案。