代码之家  ›  专栏  ›  技术社区  ›  Zachary Scott

实体框架4:Repository方法T Add(T Entity)返回T:Can that really happen(without SaveChanges)?

  •  0
  • Zachary Scott  · 技术社区  · 14 年前

    如果您有一个存储库的接口,其中包括

    T Add( T entity);
    

    存储库不会包含Save()或SaveChanges()。如果要返回“实体”:

    return _dc.Entities.Where( n => n.ID == entity.ID).Single();
    

    我不希望这会影响数据库并自动生成标识值(自动递增)。两个问题:

    1. 假设ID是identity(自动递增)字段,那么字段中ID的值是什么?
    2. 当这真的保存时,我们能期望返回对象中的标识字段自动更新吗?
    3. 是否有一个命令将更新存储库外部数据库中的对象引用?

    这是为具有虚拟属性的实体框架4使用ASP.NET POCO生成器。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Craig Stuntz    14 年前

    _dc.Entities.Anything 击中分贝。LINQ to实体总是命中db。即使对象已经在上下文中。

    避免数据库查询 对象已在上下文中,请使用 ObjectContext.GetObjectByKey()

    自动递增 int long 0 在你拯救之前。是的,保存时会更新。只要对象附加到上下文,它们都会看到这一点。