EntityFramework 4.1 с кодом DbContext, который следует поместить в метод сохранения репозитория для сохранения и обновления - PullRequest
1 голос
/ 05 марта 2012

У меня есть простой EntityFramework 4.1 доступ к данным с помощью DbContext, и у меня есть таблица пользователей, которая сопоставлена ​​с пользователями, теперь я делаю репозиторий пользователей и у меня есть этот метод:

public bool Save(Users entity)
{
    ///What should i put here to Save entity or update Same time ?
}

Интересно, что я должен поместить туда, чтобы сохранить сущность, если она новая, и обновить, если нет, учитывая, что сущность может не быть присоединена к контексту и т. Д.

Примечание: - Я не хочу создавать свойство для показа ObjectContext из DbContext, как я обычно делал, чтобы выставить objectContext для непосредственного присоединения и проверки, является ли объект В приложении я не хочу этого делать, так как считаю, что это не лучшая практика, так как DbContext должен заменить все это.

Ответы [ 2 ]

1 голос
/ 05 марта 2012

Один простой шаблон, который может работать для вставки или обновления, состоит в предположении, что первичный ключ с нулем означает, что объект является новым и должен быть добавлен, в противном случае он существует и должен быть обновлен. Например:

public void Save(Users entity) 
{ 
    context.Entry(entity).State = entity.Id == 0
        ? EntityState.Added
        : EntityState.Modified;

    context.SaveChanges();
} 

Подробнее см. http://blogs.msdn.com/b/adonet/archive/2011/01/29/using-dbcontext-in-ef-feature-ctp5-part-4-add-attach-and-entity-states.aspx.

0 голосов
/ 05 марта 2012

DbContext.SaveChanges();

Документация MSDN

...