EF延迟设置属性直到插入

时间:2012-10-09 18:16:24

标签: c# entity-framework entity-framework-4

public class User {
    int Id { set; get; } // autogenerated on insert
    public string Username { set; get; }
}

然后在我的代码中的一些地方我有以下内容:

var user = new User();
user.Username = string.Format("user{0}", user.Id);
dbContext.User.Add(user);
dbContext.SaveChanges();
Debug.WriteLine(user.Username); // outputs "User0" when the Id is ..not 0

2 个答案:

答案 0 :(得分:1)

您正在插入新创建的用户,而不是插入您创建的用户:

更改:

var user = new User();
user.Username = string.Format("user{0}", user.Id);
dbContext.User.Add(new User());

为:

var user = new User();
user.Username = string.Format("user{0}", user.Id);
dbContext.User.Add(user);

答案 1 :(得分:0)

这对您有用的唯一方法是,如果您的用户首先使用空Username属性,.SaveChanges(),然后user.Username = string.Format(...),则再次保存。即使您是通过直接SQL编写的,在db提交更改之前,您也不知道该行的ID。

如果没有多次保存,编辑就无法满足您的要求。