C# Linq到Sql-我可以构建一个通用的更新操作吗?

C# Linq到Sql-我可以构建一个通用的更新操作吗?,c#,linq-to-sql,business-logic-layer,C#,Linq To Sql,Business Logic Layer,对于我的每个表,都有键值,所以我的问题是如何获得Key属性? 我想搜索我在paramater中得到的对象,并通过这个更新的对象更新表。如何从表中找到我的对象 public static void Update<TEntity>(TEntity UpdatedObject) where TEntity : class { DatabaseLinqDataContext ClientLinq = new DatabaseLinqDataContex

对于我的每个表,都有键值,所以我的问题是如何获得Key属性? 我想搜索我在paramater中得到的对象,并通过这个更新的对象更新表。如何从表中找到我的对象

public static void Update<TEntity>(TEntity UpdatedObject) where TEntity : class
        {
            DatabaseLinqDataContext ClientLinq = new DatabaseLinqDataContext(Patch);
            ClientLinq.GetTable<TEntity>()// I want to search that object i got in the paramater and update it. how do I find my object from the table?
            ClientLinq.SubmitChanges();
        }
有什么想法吗?解决这个问题的正确方法是什么


在业务逻辑层中写的这个动作。

有一些要考虑的情况。

如果实体实例以前是由这个datacontext加载的,只需调用SubmitChanges。无需执行任何其他操作,此时将更新所有修改的实例

如果实体实例以前由不同的datacontext加载,则需要创建一个不会被跟踪的新副本,然后执行下一个案例

如果实体实例不是由datacontext加载的,或者该实例是上面的副本,则需要调用

  //attach the changes to the tracked object graph
dataContext.GetTable<T>().Attach(t, true);
  //if type uses optimistic concurrency, then you need to refresh
  //load the "original" state for the tracked object graph
dataContext.Refresh(t, RefreshMode.KeepCurrentValues);
dataContext.SubmitChanges();
或者,最好打电话:

dataContext.GetTable<T>().Attach(tChanged, tOriginal);
dataContext.SubmitChanges();

谢谢,但是附件做什么呢?更新数据库中的对象?为什么要重建默认的linq到sql行为?