Entity Framework 与 IdentityUser 的关系未解析
Entity Framework relationship to IdentityUser not resolving
我有一个名为“MyFile”的class,它与“Workspace”具有多对一关系,然后“Workspace”与“IdentityUser”具有多对一关系。这在我创建工作区时效果很好,与 IdentityUser 的关系配置正确,但是当我获取工作区时,所有者字段显示为空。在数据库中,值在所有者列中设置。
所以我想做的是获取所有文件的列表以及它们属于谁,但是由于所有者 属性 为空,我无法找出所有者。数据库方面看起来都不错。
(此代码已简化以关注问题)
public class MyFile
{
// Base
public Guid MyFileID { get; set; }
[Column(TypeName = "nvarchar(256)")]
public string Name { get; set; }
// Workspace
public virtual Workspace Workspace { get; set; }
}
public class Workspace
{
// Base
public Guid WorkspaceID { get; set; }
public string Name { get; set; }
// Security
public virtual IdentityUser Owner { get; set; }
}
获取以 Owner = Null 结尾的信息的代码:
var myFiles = _applicationDbContext.MyFiles
.Include(x => x.Workspace)
.ThenInclude(y => y.Owner)
.Where(x => x.Deleted == showDeleted)
.OrderByDescending(x => x.Uploaded)
.Skip(pagesize*(page-1))
.Take(pagesize);
我设法通过使用 ApplicationUser 扩展 IdentityUser class 然后将关系更改为 ApplicationUser 来解决问题。
我还添加了一个 ApplicationUserId,我在填充 ApplicationUser 的同时填充它,然后我可以用来在我的 lamdba 中查找正确的 IdentityUser。可能有更好的解决方案,但这对我有用。
public class Workspace
{
// Base
public Guid WorkspaceID { get; set; }
public string Name { get; set; }
// Security
public string ApplicationUserId { get; set; }
public ApplicationUser ApplicationUser { get; set; }
}
分机 Class:
public class ApplicationUser : IdentityUser
{
}
我有一个名为“MyFile”的class,它与“Workspace”具有多对一关系,然后“Workspace”与“IdentityUser”具有多对一关系。这在我创建工作区时效果很好,与 IdentityUser 的关系配置正确,但是当我获取工作区时,所有者字段显示为空。在数据库中,值在所有者列中设置。
所以我想做的是获取所有文件的列表以及它们属于谁,但是由于所有者 属性 为空,我无法找出所有者。数据库方面看起来都不错。 (此代码已简化以关注问题)
public class MyFile
{
// Base
public Guid MyFileID { get; set; }
[Column(TypeName = "nvarchar(256)")]
public string Name { get; set; }
// Workspace
public virtual Workspace Workspace { get; set; }
}
public class Workspace
{
// Base
public Guid WorkspaceID { get; set; }
public string Name { get; set; }
// Security
public virtual IdentityUser Owner { get; set; }
}
获取以 Owner = Null 结尾的信息的代码:
var myFiles = _applicationDbContext.MyFiles
.Include(x => x.Workspace)
.ThenInclude(y => y.Owner)
.Where(x => x.Deleted == showDeleted)
.OrderByDescending(x => x.Uploaded)
.Skip(pagesize*(page-1))
.Take(pagesize);
我设法通过使用 ApplicationUser 扩展 IdentityUser class 然后将关系更改为 ApplicationUser 来解决问题。 我还添加了一个 ApplicationUserId,我在填充 ApplicationUser 的同时填充它,然后我可以用来在我的 lamdba 中查找正确的 IdentityUser。可能有更好的解决方案,但这对我有用。
public class Workspace
{
// Base
public Guid WorkspaceID { get; set; }
public string Name { get; set; }
// Security
public string ApplicationUserId { get; set; }
public ApplicationUser ApplicationUser { get; set; }
}
分机 Class:
public class ApplicationUser : IdentityUser
{
}