【问题标题】:Entity Framework 4: Repository method T Add(T entity) returns T: Can that actually happen (without SaveChanges)?实体框架 4:存储库方法 T Add(T entity) 返回 T:这真的会发生吗(没有 SaveChanges)?
【发布时间】:2010-10-27 00:29:45
【问题描述】:

如果您的存储库接口包含

T Add( T entity);

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

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

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

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

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

【问题讨论】:

    标签: entity-framework-4


    【解决方案1】:

    _dc.Entities.Anything总是访问数据库。 LINQ to Entities 总是命中数据库。即使对象已经在上下文中。

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

    在您保存之前,自动递增的 intlong 将是 0。是的,这会在您保存时更新。只要对象附加到上下文中,它们都会看到这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多