Итак, я бы хотел написать обобщенную функцию Upsert для LINQ to SQL, и у меня возникли проблемы с концепцией, как это сделать. Я бы хотел, чтобы он работал примерно так:
var db = new DataContext();
db.Customers.UpsertOnSubmit(customer);
Таким образом, это должно было быть общим в некотором роде, и я предполагаю, и метод расширения в таблице. Я смог донести это до определения первичного ключа базовой таблицы:
var context = source.Context;
var table = context.Mapping.GetTable(source.GetType());
var primaryMember = table.RowType.DataMembers.SingleOrDefault(m => m.IsPrimaryKey);
Я предполагаю, что это будет необходимо, чтобы это составляло запрос, чтобы определить, находится ли элемент в базе данных уже или нет, но я не знаю, что с ним делать в данный момент.