我正在尝试将两个相互关联的实体保存到数据库中,但是其中一个实体从不保存另一个实体的ID。
我有一个Location类:
public string Name { get; set; }
public string Description { get; set; }
public string Latitude { get; set; }
public string Longitude { get; set; }
public Company Company { get; set; }
[ForeignKey("OpeningTimeId")]
public OpeningTime OpeningTimes { get; set; }
我有一个OpeningTimes类:
public string Monday { get; set; }
public string Tuesday { get; set; }
public string Wednesday { get; set; }
public string Thursday { get; set; }
public string Friday { get; set; }
public string Saturday { get; set; }
public string Sunday { get; set; }
[ForeignKey("LocationId")]
public Location Location { get; set; }
然后我尝试将它们保存为这样的数据库:
Location location = new Location()
{
Name = LocationDto.Name,
Description = LocationDto.Description,
Latitude = LocationDto.Latitude,
Longitude = LocationDto.Longitude,
Company = LocationDto.Company,
OpeningTimes = new OpeningTime() {
Monday = LocationDto.OpeningTimes.Monday,
Tuesday = LocationDto.OpeningTimes.Tuesday,
Wednesday = LocationDto.OpeningTimes.Wednesday,
Thursday = LocationDto.OpeningTimes.Thursday,
Friday = LocationDto.OpeningTimes.Friday,
Saturday = LocationDto.OpeningTimes.Saturday,
Sunday = LocationDto.OpeningTimes.Sunday,
}
};
_context.Locations.Add(location);
_context.SaveChanges();
将其保存到数据库后,将填充Locations表中的OpeningTimeId列,但不填充OpeningTimes表中的LocationId列。
现在在此特定示例中,我不必要需要填充LocationId列,但是我确实需要对其他实体执行此操作,并且我不确定为什么这不起作用
答案 0 :(得分:3)
您在“位置”类中未定义类型为Int和Identifier和主键的字段ID,一旦将记录添加到表中,该键就会自动添加一个单位。 但是您可以作为向导在表的数据库中执行此操作,但是您需要再次将其添加到教室中,但是如果您想在类本身中添加属性,则编译器将在后台执行此操作。>
喜欢:
[Key]
public int LocationId {get;set;}
public string Name { get; set; }
public string Description { get; set; }
public string Latitude { get; set; }
public string Longitude { get; set; }
public Company Company { get; set; }
[ForeignKey("OpeningTimeId")]
public OpeningTime OpeningTimes { get; set; }
答案 1 :(得分:0)
两个表都不需要引用,只需从一个表中删除。对于一对一映射,您可以向表中的Referrerd外键列添加唯一约束。