Расширение DbContext для использования общего Entry (...) - PullRequest
0 голосов
/ 15 мая 2011

Это не столько вопрос, сколько обзор кода из краудсорсинга ...

Я заметил, что вы можете использовать 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 ...
}

1 Ответ

1 голос
/ 15 мая 2011

Я не понимаю ваш код.Почему вы используете это:

 var type = itemToModify.GetType();
 var item = Convert.ChangeType(itemToModify, (Type)type);
 context.Entry(item).State = state;

Если у вас есть строго типизированный объект?

Почему бы не использовать только это:

context.Entry(itemToModify).State = state;

или

context.Entry<T>(itemToModify).State = state;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...