Это не столько вопрос, сколько обзор кода из краудсорсинга ...
Я заметил, что вы можете использовать context.Entry (itemToModify) для добавления объектов, а также для обновления и удаления с одним уловом, необходимо указать тип itemToModify, он не может быть универсальным.
Если бы я мог обойти проблему универсальных типов, я мог бы устранить и упростить мой код.
Вот что я сделал, это работает локально, дайте мне знать, что вы думаете, если вы видите проблемы и т. Д.
public static class ExtensionMethods
{
public static bool ModifyContext<T>(this DbContext context, T itemToModify, EntityState state) where T : class
{
// Function that throws a null arg exception
ValidationFunctions.IsNotNull(itemToModify);
context.Entry(itemToModify).State = state;
return context.SaveChanges() > 0;
}
}
public class PersonRepository : IPersonRepository
{
private readonly SomeContext _context = new SomeContext();
/// <summary>
/// Add a person
/// </summary>
public bool Add(Person personToAdd)
{
return _context.ModifyContext(personToAdd, EntityState.Added);
}
// Edit, Delete etc ...
}