【发布时间】:2015-06-17 00:24:12
【问题描述】:
我有一门课
public class Document
{
[Key]
public int Id { get; set; }
public User ModifiedBy { get; set; }
public DateTime ModifiedDate { get; set; }
}
这里的“用户”是一个具有一些属性的类(都是原始类型) 这是我对文档类的映射
HasRequired(a => a.ModifiedBy).WithMany().Map(b => b.MapKey("ModifiedBy")).WillCascadeOnDelete(false);
所以在“文档”表中,ModifiedBy 是一个外键。
我正在尝试更新 id 为 10 的文档的 ModifiedBy 字段
Document document= new Document();
using (DBContext ctx = new DBContex()) {
User loggedinUser =ctx.Users.Where(u=>u.LoginId==loggedInUserId).FirstOrDefault() as User;
document.id=10;
document.ModifiedBy = loggedinUser;
document.ModifiedDate = DateTime.Now;
ctx.Entry(document).State = EntityState.Modified;
ctx.SaveChanges();
}
但是 ModifiedBy 字段没有更新。只有 ModifiedDate 字段正在更新。
请注意,我不更新用户表。 我只想更新文档表
【问题讨论】:
-
您希望通过该特定 ID 从数据库中获取文档。
ctx.Users.Where(u=>u.LoginId==loggedInUserId).FirstOrDefault() as User可以简化为ctx.Users.FirstOrDefault(u => u.LoginId == loggedInUserId)并且你需要考虑是使用FirstOrDefault还是SingleOrDefault。 -
谢谢,但这不是答案
-
这就是它出现在 cmets 中的原因.....和 p.s.这也是一个答案,最重要的是,不是非常明确
标签: c# .net entity-framework foreign-keys