EF核心-单一选择存储在父级的子级集合

时间:2019-02-06 17:15:02

标签: c# entity-framework-core

使用.NET Core 3.0和EF Core(如果有影响的话)。

我正在尝试定义一个模型,其中:

  • 用户拥有玩具集合。
  • 用户可以拥有当前选择的玩具。

我正在尝试对此建模(BaseModel具有我所有实体的公共属性),而AVUser是我的ASP.NET Identity用户类。

public abstract class BaseModel
{
    public int Id { get; set; }
    public DateTime LastModifiedDate { get; set; }
    public DateTime CreatedDate { get; set; }
    public AVUser CreatedUser { get; set; }
    public AVUser ModifiedUser { get; set; }
}

public class Toy: BaseModel
{
    [MaxLength(80)]
    public string Name { get; set; }

}

public class AVUser : IdentityUser
{
    public string FirstName { get; set; }

    // The currently selected toy for the user.
    public int SelectedToyId { get; set; }
    public Toy SelectedToy { get; set; }

}

但是,EF Core抛出错误,指出:无法确定类型为“玩具”的导航属性“ AVUser.Toy”表示的关系。

我对此注释有麻烦,因此它知道用户可以收藏玩具,并且我想将一个玩具与用户一起存储为当前选择的玩具。

1 个答案:

答案 0 :(得分:2)

编写模型类,如下所示:

public class Toy: BaseModel
{
    [MaxLength(80)]
    public string Name { get; set; }

    [ForeignKey("AVUser")]
    public string UserId { get; set; }

    public AVUser AVUser { get; set; }

}

public class AVUser : IdentityUser
{
    public string FirstName { get; set; }

    // The currently selected toy for the user.
    [ForeignKey("SelectedToy")]
    public int SelectedToyId { get; set; }
    public Toy SelectedToy { get; set; }

    public ICollection<Toy> Toys {get; set;}

}

然后在OnModelCreating的{​​{1}}中进行如下配置:

DbContext