所以我想为LINQ to SQL编写一个通用的Upsert函数,我在构思它的过程中遇到了一些麻烦.我希望它能像这样工作:
var db = new DataContext();
db.Customers.UpsertOnSubmit(customer);
Run Code Online (Sandbox Code Playgroud)
所以它必须在某种程度上是通用的,我猜和表上的扩展方法.在确定基础表的主键时,我已经能够做到这一点:
var context = source.Context;
var table = context.Mapping.GetTable(source.GetType());
var primaryMember = table.RowType.DataMembers.SingleOrDefault(m => m.IsPrimaryKey);
Run Code Online (Sandbox Code Playgroud)
我假设有必要让这个来组成一个查询来判断该项是否已经在数据库中,但我现在还不知道如何处理它.