我有一个File
实体和一个User
实体。实体通过一个名为的属性与File
实体具有 1:1 的关系(这记录了上次更改文件的用户)。在名为 的实体中还有一个字段,它是实际的 FK 关系。这种关系是单向的:实体没有返回实体的导航属性。User
LastChangeUser
File
LastChangeUserId
User
File
class File
{
public int Id { get; set; }
public int? LastChangeUserId { get; set; }
public virtual User LastChangeUser { get; set; }
}
class User
{
public int Id { get; set; }
}
当 aFile
改变时,我需要LastChangeUser
为File
. 我只有用户的 ID,而不是完整的 User 对象。所以,我正在这样做:
file.LastChangeUser = null;
file.LastChangeUserId = userId;
File
当新创建对象(然后将其添加到实体集合中的 POCO)时,这似乎适用于创建文件。
File
但是,当对象是从数据库中检索(作为代理)的现有对象时,更新文件时它不起作用。
在后一种情况下,我最终在数据库中为该LastChangeUserId
字段设置了一个 NULL。(调用 SaveChanges 后,该对象null
在LastChangeUser
和LastChangeUserId
字段中都有)。
也许我在这里做错了?什么是正确的方法?我真的需要去获取User
对象才能设置LastChangeUser
属性吗?