在EF5中的EntityState.Modified之后有更好的方法来获取旧值吗?

时间:2013-05-22 20:11:43

标签: asp.net-mvc entity-framework asp.net-mvc-4 entity-framework-5

我只想知道在EntityState.Modified之后是否存在更好的方法来获取数据库中的值。我的语法:

db.Entry(UserProfile).State = EntityState.Modified;
var olderPhoto = (string)db.Entry(UserProfile).GetDatabaseValues()["Photo"];

感谢您的最终答案

2 个答案:

答案 0 :(得分:1)

嗯,取决于。如果您无法控制实体被修改的时间,并且您希望能够在之后获得旧值它已经被修改(但可能是在它被提交之前),那么这几乎是您唯一的选择:从数据库中获取它。

但是,如果您可以在修改之前将原始文件存储在某处,那么您可以使用它而无需重新查询数据库。这里的问题是你必须将你需要的任何和所有值显式存储到一个变量中,只是存储实体本身只会存储指向同一个实例的指针。

var olderPhoto = UserProfile.Photo;

UserProfile.Photo = newPhoto;
db.Entry(UserProfile).State = EntityState.Modified;

// use olderPhoto

答案 1 :(得分:1)

我认为有......:

db.Entry(UserProfile).State = EntityState.Modified;
var olderPhoto = db.Users.Find(UserProfile.UserID).Photo.ToString();