【发布时间】:2015-06-23 00:30:55
【问题描述】:
我有两个实体:
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
}
和
public class VideoModel
{
public int Id { get; set; }
public string VideoFileName { get; set; }
public DateTime UploadedTime { get; set; }
public virtual UserProfile Owner { get; set; }
}
当我试图坚持VideoModel 实体时,问题出现了:
VideoModel video = db.VideoModels.Create();
video.VideoFileName = fileName;
video.Owner = usersContext.UserProfiles.Find(WebSecurity.CurrentUserId); // CurrentUserId = 3, ok
video.UploadedTime = DateTime.Now; // video.Owner.UserId = 3
db.VideoModels.Add(video); // still 3
db.SaveChanges(); // Problem! video.Owner.UserId = 10
并且通过 SaveChanges() 方法分配给UserId 的新值大于之前在 1 上尝试分配的值。当然,外键约束被破坏了。为什么该方法的行为如此奇怪?
【问题讨论】:
标签: asp.net-mvc-4 entity-framework-5 foreign-key-relationship savechanges