我有类型称为员工,上传和 UploadType ,它们具有一些内存计算属性(即非数据库计算属性),该区域依赖于复杂的导航属性。因此,每次加载项目时都需要加载相关类型。
public class Employee
{
public Upload Photo {get;set;}
public Int32 PhotoId {get;set;}
}
public class Upload
{
public UploadType UploadType {get;set;}
public Int32 UploadTypeId {get;set;}
[NotMapped]
public String ServerLocation =>
HttpContext.Current.Server.MapPath($".../{UploadType.Description}/FileName.pdf");
}
public class UploadType { ... }
问题是文件是上传的asyn,后来又添加到拥有它的员工。
var uploadType = database.UploadTypes.Single(t => t.Id = utId);
var upload = new Upload() {
UploadType = uploadyType;
UploadTypeId = utId;
}; // Now I can use my in memory computed path.
唯一的问题是,由于在新员工创建期间将其保存在带外,因此上传类型使用的上下文与实际创建员工并附加上载时的上下文不同。
因此,当我保存照片时,程序会抱怨不同的上下文(当然是相关的上传类型)。 我可以将UploadType设置为Detached,但然后在UploadType表中重新创建该项,这绝对不是好事。
有没有办法在保存之前从正确的上下文重新加载该实体,所以这不会发生?