LINQ EF复制并粘贴带有差异字段的记录

时间:2014-01-13 07:55:19

标签: c# linq linq-to-entities

我需要复制并粘贴我桌子的一些记录,但只需更换一个字段 这是我的代码:

                using (ClearWhiteDBEntities cwContext = new ClearWhiteDBEntities())
            {
                var qlstfld = from lstflds in cwContext.tblListFields
                              where lstflds.listId == theLongSrc
                              select lstflds;

                foreach (var item in qlstfld)
                {
                    tblListField lstFldRow = new tblListField
                    {
                        name = item.name,
                        filterFieldId = item.filterFieldId,
                        listId = theLongDes, //this field must be change in paste
                        continueById = item.continueById,
                        destinationId = item.destinationId,
                        conditionId = item.conditionId,
                        userId = userId,
                        date = Convert.ToDateTime(DateTime.Now.ToShortDateString()),
                        time = DateTime.Now.TimeOfDay,
                        IP = trueIp
                    };
                    cwContext.AddTotblListFields(lstFldRow);
                    cwContext.SaveChanges();
                }
            }

但是我收到了这个错误:
在提供程序连接上启动事务的错误。有关细节,请参阅内部异常。

复制和粘贴记录但更改一个字段的最佳解决方案是什么?

1 个答案:

答案 0 :(得分:0)

如果您正在使用更改跟踪:

using (ClearWhiteDBEntities cwContext = new ClearWhiteDBEntities())
{
    var qlstfld = from lstflds in cwContext.tblListFields
                              where lstflds.listId == theLongSrc
                              select lstflds;

    foreach (var item in qlstfld)
    {
        cwContext.ObjectStateManager.ChangeObjectState(item, System.Data.EntityState.Added);
        item.Id = 0;
        item.listId = theLongDes; //this field must be change in paste
    }
    cwContext.SaveChanges();
}