带有DbContext代码的EntityFramework 4.1应该放在存储库保存方法中以保存和更新

时间:2012-03-05 18:20:50

标签: c# entity-framework dbcontext

我有一个简单的EntityFramework 4.1数据访问与DbContext我有用户表现在映射到用户我正在建立UsersRepository我有这个方法:

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

我想知道我应该把它放在那里以保存实体(如果它是新的),如果不是则更新,考虑到实体可能没有附加到上下文等。

注意: - 我不想让一个属性从DbContext公开ObjectContext,就像我以前那样公开objectContext以便直接附加并测试如果附加了对象,我不想这样做,因为我认为这不是最佳实践,因为DbContext应该替换所有这些。

2 个答案:

答案 0 :(得分:1)

一个可用于插入或更新的简单模式是假设主键为零意味着该实体是新的并且应该添加,否则它是现有的并且应该更新。例如:

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

答案 1 :(得分:-1)

DbContext.SaveChanges();

MSDN Documentation