保存数据后在 entity framework 6 中获取范围 ID

get Scope ID in entity framework 6 after saving data

我已经在数据访问层之上实现了存储库模式和工作单元。我在通用存储库中拥有所有 crud 操作,但在工作单元中保存方法。在我的业务中 class 我正在将对象传递给泛型 class,然后是工作单元中的 Save 方法,我的问题是如何从这一点向前获取范围 ID

基本上我需要在保存后获取对象的 ID,我不知道什么是对象 ID 名称,因为我使用通用 class 来保存数据

 public class GenericRepository<TEntity> : IGenericRepository<TEntity> where TEntity : class
{
 protected DbSet<TEntity> _DbSet;
    private readonly DbContext _dbContext;

    public GenericRepository()
    { }

    public GenericRepository(DbContext dbContext)
    {
        this._dbContext = dbContext;
        _DbSet = _dbContext.Set<TEntity>();
    }

    public void InsertEntity(TEntity obj)
    {
        _DbSet.Add(obj);
    }
}

...

 public class FunctionsNavigation_UnitOfWork : IDisposable
{
    private FunctionContext _FunctionContext = new FunctionContext();

    uow.Qualification_FeeSchemeRepository.InsertEntity(obj);
 }
}

  public void Save()
    {
        _FunctionContext.Database.Log = s => System.Diagnostics.Debug.WriteLine(s);

        _FunctionContext.SaveChanges();

    }

在后续业务中 class 保存后我尝试获取对象的 ID 但我没有得到任何东西

  _uof.Sys_Nav_Functions_Repository.InsertEntity(_Sys_Nav_FunctionEntity);


   _uof.Save();

   _FunctionID = _obj.Sys_Nav_Function.Function_ID;

You will get the inserted Id at the object itself.

private FunctionContext _FunctionContext = new FunctionContext();

var obj = new yourEntity();
uow.Qualification_FeeSchemeRepository.InsertEntity(obj);
uow.Save();

将数据保存到数据库后。实体框架将填充从数据库生成的实体类型 PK。

总之你到了这里

int id = obj.Id;

更新插入1:1关系样本

Person person = new Person//create person entity
{
   FirstName = "Eldho",
   LastName  = "Abe",
};

AuthorizedUser user = new AuthorizedUser//create authorized user role entity
{
   Person = person, //The reference of newly inserted user
   UserId = myUserid,
   HashedPassword = password,
};

uow.PersonDA.Insert(person);
uow.AuthorizedUserDA.Insert(user);

uow.Save();//insert to database