c# - 插入数据库一对多关系.net core 3.1
问题描述
我有表 Race 和 Subrace 的一对多关系。1 个种族可以有多个子种族,但 1 个子种族只能是 1 个种族。我做了以下课程。
public class Race
{
public int ID { get; set; }
[Required]
public string RaceName { get; set; }
[Required]
[StringLength(200)]
public string RaceFeatures { get; set; }
[JsonIgnore]
public IList<SubRace> SubRaces { get; set; }
public class SubRace
{
public int Id { get; set; }
[Required]
[StringLength(50, ErrorMessage = "Only 50 characters allowed")]
public string SubRaceName { get; set; }
[Required]
[StringLength(400, ErrorMessage = "Only 400 characters allowed")]
public string SubraceFeatures { get; set; }
public int RaceID { get; set; }
public Race Race { get; set; }
}
但是,我无法弄清楚我必须如何初始化此表中的值。这是我正在尝试做的,但在尝试运行时出现以下错误。
System.NullReferenceException:“对象引用未设置为对象的实例。”
API.Model.Race.SubRaces.get 返回 null。
if (!context.Races.Any())
{
var rc0 = new Race()
{
RaceName = "Elf",
RaceFeatures = "Darkvision. +2 Charisma",
};
var sr1 = new SubRace()
{
Race = rc0,
SubRaceName = "Wood",
SubraceFeatures = "+1 Wisdom",
};
rc0.SubRaces.Add(sr1);
context.Races.Add(rc0);
context.SaveChanges();
}
我在这里做错了什么?我似乎无法弄清楚。
解决方案
您缺少 SubRaces 初始化。
var rc0 = new Race()
{
RaceName = "Elf",
RaceFeatures = "Darkvision. +2 Charisma",
SubRaces = new List<SubRace>()
};
推荐阅读
- python-3.x - 如何使用随机生成的数字创建文件名?
- javascript - 使用输入的金额
- sitemap - 为什么站点地图生成器没有在博客部分生成超过 2 个分页页面内容的链接
- html - Angular中的动态colspan
- r - 如何根据出现的字符数删除行?
- javascript - 我有一个带有三个输入框的表单,我想用 javascript 实时计算数学
- python - Python BeautifulSoup 和类
- ios - XCode 构建卡住了
- verilog - x 和 z 值在 Verilog 中究竟代表什么?
- python - Pandas 如何替换以特定字符开头的每个句子的值?