我正在为一个与身份和实体框架有关的问题而抓狂。我正在使用代码优先的方法。
我有这些课程:
public class WebApplicationUser : IdentityUser
{
public virtual ICollection<Favorite> Favorites { get; set; }
}
public class Favorite
{
public int Id { get; set; }
public string? ImageName { get; set; }
public virtual WebApplicationUser WebApplicationUser { get; set; }
}
public class WebApplicationContext : IdentityDbContext<WebApplicationUser>
{
public WebApplicationContext(DbContextOptions<WebApplicationContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
// Customize the ASP.NET Identity model and override the defaults if needed.
// For example, you can rename the ASP.NET Identity table names and more.
// Add your customizations after calling base.OnModelCreating(builder);
}
}
我想添加Favorites
属性,如上面的代码所示。
当我使用代码添加一个新的Favorite
时,它工作正常,并被传输到数据库。
我通过获取当前用户对象
var user = await _userManager.GetUserAsync(HttpContext.User);
user.Favorites.Add
问题是,由于某种原因,数据库中现有的收藏夹没有填充到我的user.Favorites
集合中(因此它们没有被读回)。
当我向集合中添加元素时,它们被写入数据库,但是当我稍后在另一个控制器操作中尝试读取收藏夹时,我总是得到一个空集合。
有人知道出了什么问题吗?
我在其他论坛尝试了不同的解决方案,但都不起作用
1条答案
按热度按时间vc9ivgsu1#
您需要使用
.Include(xx)
来加载EF Core中的相关数据,因此在这里您可以用途:以使用
user.Favorites
集合加载用户。