C# EntityFramework 4.1,带有DbContext代码,该代码应放在存储库保存方法中进行保存和更新

C# EntityFramework 4.1,带有DbContext代码,该代码应放在存储库保存方法中进行保存和更新,c#,entity-framework,dbcontext,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 ? } 我想知道如果实体是新的,我应该放什么来保存它,如果不是,我应该放什么来更新它,考虑到实体可能没有附加到上下文等等 注意:-

我有一个简单的
EntityFramework 4.1
数据访问和DbContext,我有一个映射到用户的用户表,现在我正在创建UsersRepository,我有以下方法:

public bool Save(Users entity)
{
    ///What should i put here to Save entity or update Same time ?
}
我想知道如果实体是新的,我应该放什么来保存它,如果不是,我应该放什么来更新它,考虑到实体可能没有附加到上下文等等


注意:-我不想创建一个属性来从
DbContext
中公开ObjectContext,因为我以前这样做是为了直接附加并测试对象是否被附加,我不想这样做,因为我认为这不是最佳实践,因为DbContext应该取代所有这些

DbContext.SaveChanges()


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

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

    context.SaveChanges();
} 

有关更多详细信息,请参见。

请在您的注释中详细介绍一下ObjectContext以及您的关注点/目标是什么?未附加实体如何?如果尚未附加实体,则将State属性设置为Modified将附加该实体,然后将其状态更改为Modified。同样,如果需要,将状态设置为Added将添加实体。