首先,由于开发人员跳槽,我采用了一个项目,因此这不仅是我第一次使用.net core,而且我还必须消化一个我没有编写的大型代码库。
以下是访问的相关类:
[Table("AccountDetails")]
public class AccountDetail
{
public int Id { get; set; }
public ICollection<FileUpload> Files { get; set; }
}
这个问题发生在美国
Files
[Table("FileUploads")]
public class FileUpload
{
public int Id { get; set; }
public string FileName { get; set; }
public ApplicationUser CreatedBy { get; set; }
public string ContentType { get; set; }
public byte[] Content { get; set; }
}
var files = _form.AccountDetail.Files.Select(q => new FileModel
{
FileName = q.FileName,
FileId = q.Id,
EffectiveDate = q.CreatedOn.ToString("d"),
FormId = _form.Id,
UploadedBy = $"{ q.CreatedBy.FirstName } { q.CreatedBy.LastName }"
}).ToList();
ApplicationUser
延伸
IdentityUser
UploadedBy
有了管理员角色,它就不会失败,并且会正确地映射到
应用程序用户
所以
CreatedBy
null
但是,在非管理员角色的其他用户帐户下,非该用户创建的任何内容都将返回null,这将触发对象引用错误。
在这种情况下,,
创造的
永远不要回来
无效的
我在快照中发现:
modelBuilder.Entity("Accounting.Entities.FileUpload", b =>
{
b.HasOne("Accounting.Entities.ApplicationUser", "CreatedBy")
.WithMany()
.HasForeignKey("CreatedById");
});
CreatedById
是实际表中引用的列
AspNetUsers
.
如果我一直返回到被调用控制器的构造函数:
public FormAccountsController(ApplicationDbContext context,
UserManager<ApplicationUser> userManager,
IMapper mapper,
RoleManager<IdentityRole> roleManager) : base(context, userManager, roleManager, mapper)
{
}
我往里面看
ApplicationDbContext context
FileUploads
创造的
永远不为空。