Согласен с ответом Марксидада , но см. Примечание 1.
Примечание 1: ИМХО, неуместно вызывать db.SubmitChanges()
во вспомогательном методе, потому что вы можете прервать транзакцию контекста. Это означает, что если вы вызываете InsertIfNotExists<TEntity>
в середине сложного обновления нескольких объектов, вы сохраняете изменения не сразу, а пошагово.
Примечание 2: InsertIfNotExists<TEntity>
- это очень общий метод, который работает для любого сценария. Если вы хотите просто отличить сущности, которые были загружены из базы данных, от сущностей, которые были созданы из кода, вы можете использовать частичный метод OnLoaded
класса Entity, например:
public partial class MyEntity
{
public bool IsLoaded { get; private set; }
partial void OnLoaded()
{
IsLoaded = true;
}
}
Учитывая (и примечание 1), функциональность InsertIfNotExists сводится к следующему:
if (!record.IsLoaded)
db.InsertOnSubmit(record);