Linq to SQL:使用泛型类型方法删除记录

时间:2014-08-29 11:40:34

标签: c# sql sql-server linq

我正在为SQL Server数据库创建同步系统。

    public void UpdateTable<T>(List<T> current, List<T> changed) where T : class
    {
        var deletedRecords = current.Except(changed);
        foreach (T entity in deletedRecords)
        {
            _context.GetTable<T>().DeleteOnSubmit(entity);
        }
        _context.SubmitChanges();
    }

但在DeleteOnSubmit操作中,它失败并显示InvalidOperationException: Unable to remove an embedded object.

数据库的设计采用CASCADE删除操作。怎么了?谢谢!

1 个答案:

答案 0 :(得分:1)

你看过this发帖吗?在此示例中,它创建了一个通用接口,其类型为T,继承自。此接口公开方法删除(T项),它执行类似于您所做的操作。问题可能是您需要为每个对象执行 db.SubmitChanges(),但我不确定。因此,我建议为 deletedRecords 列表中的每个对象调用此方法。希望它有所帮助!

 // Deletes the data values in the LINQ to SQL generated class.
    public virtual bool Delete(T Item)
    {
        using (TestDBContext db = new TestDBContext())
        {
            db.GetTable<T>().DeleteOnSubmit(Item);
            db.SubmitChanges();
            return true;
        }
    }