簡體   English   中英

在EF Core中存儲一對一關系

[英]Storing One-To-One relationships in EF Core

我試圖將兩個實體保存到相互關聯的數據庫中,但是其中一個實體從不保存另一個實體的ID。

我有一個位置課程:

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列,但是我確實需要對其他實體執行此操作,並且我不確定為什么這不起作用。

您在類Location中未定義類型為Int和Identifier And主鍵的字段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; }

無需在兩個表中都有引用,只需從一個表中刪除。 對於一對一映射,您可以向表中的Referrerd外鍵列添加唯一約束。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM