更新EF 4功能CTP 4分离的POCO

xxx*_*xxx 5 .net poco entity-framework-4

我正在尝试使用EF 4 CTP 4更新分离的POCO.

我的域类看起来像这样:

public class User {
  public int Id { get; set; }

  [Required, DisplayName("First Name")]
  public string FirstName { get; set; }

  [Required, DisplayName("Last Name")]
  public string LastName { get; set; }

  [ConcurrencyCheckAttribute, Timestamp]
  public byte[] DataVersion { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在存储库中,我有以下内容:

public void SaveUser(User user) {
  if (user.Id > 0) {
   dbContext.Users.Attach(user);
  }
  else {
   dbContext.Users.Add(user);
  }
  dbContext.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

dbContext继承自DbContext.

我能够做插入很好,但附加不起作用.我运行Sql Profiler,没有为更新发送sql.

xxx*_*xxx 6

我明白了......

在dbContext类中,我添加了一个将实体标记为已修改的方法.

public void MarkAsModified(object entity) {
  base.ObjectContext.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified);
}
Run Code Online (Sandbox Code Playgroud)

我的存储库方法现在看起来像这样

public void SaveUser(User user) {
  if (user.Id > 0) {
    dbContext.Users.Attach(user);
    dbContext.MarkAsModified(user);
  }
  else {
    dbContext.Users.Add(user);
  }

  dbContext.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)