實體框架核心可以為空的外鍵

asp.net-mvc entity-framework-core

我無法獲取外鍵值可能為null的實體列表。

型號:

public class Company
{
    [Key]
    [Required]
    public int Id { get; set; }
    [Display(Name = "Company Name")]
    public string CompanyName { get; set; }
    [Display(Name = "Main Phone")]
    public string LandPhone { get; set; }
    [Display(Name = "Fax")]
    public string FaxPhone { get; set; }
}

public class Contact
{
    [Key]
    [Required]
    public int Id { get; set; }
    [Display(Name ="First Name")]
    public string FirstName { get; set; }
    [Display(Name = "Last Name")]
    public string LastName { get; set; }
    [EmailAddress]
    public string Email { get; set; }
    [Display(Name = "Mobile Phone")]
    public string MobilePhone { get; set; }
    [Display(Name = "Office Phone")]
    public string LandPhone { get; set; }
    [Display(Name = "Fax")]
    public string FaxPhone { get; set; }
    public string Title { get; set; }
    public int CompanyId { get; set; }
    [ForeignKey("CompanyId")]
    public Company Company { get; set; }
}

當我嘗試獲取所有Contacts的列表,並且其中一個Contacts在我的數據庫中具有CompanyId的空值時,它將在它返回的列表中跳過該Contact 。例如,查詢var contacts = _context.Contacts.Include(c => c.Company).ToList();只返回下表中的Josh Stone:

聯繫表

我正在使用Entity Framework Core 1.0.0。任何幫助都將得到真誠的感謝。

一般承認的答案

假設它實際上已經回歸瑪麗,你會期望她的CompanyId是什麼?我懷疑是null(它還能是什麼?),在這種情況下你的模型是錯誤的並且public int CompanyId { get; set; }應該是public int? CompanyId { get; set; }



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因