如何在Entity Framework Core中設置實體關係

.net-core asp.net-core c# ef-code-first-mapping entity-framework-core

這裡我們在EF Core上有3個表:

  1. 新聞
  2. 項目
  3. 鏈接

還有更多(新聞,項目除外):內容,帖子,表格等

和我的模型定義

public class Item
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
    public Link Link { get; set; }
}

public class News
{
    public int Id { get; set; }
    public string Header { get; set; }
    public string Content { get; set; }
    public Link Link { get; set; }
}

public class Link
{
    public int Id { get; set; }
    public string Type { get; set; }
    public int RowId  { get; set; }
    public string Url { get; set; }
}

Links描述了每個新聞和每個項目的URL。這意味著Links有4列:

  1. ID
  2. 類型 - 新聞或項目
  3. RowId - 包含項目或新聞的ID(取決於類型)
  4. 網址

如何建立關係?請記住,我們需要在Links表中按URL解析實體。

一般承認的答案

小巧玲瓏。 Just Dapper允許編寫自定義查詢。


熱門答案

為了擁有屬性NewRow,以及對其他兩個表的約束,你可以像這樣冷實現它:

public int RowId { 
    public get {
        return this.Type.equals("news") ? NewsId.Value : ItemId.Value;
    };   
    private set {
        if(this.Type.equals("news")){
          NewsId = value;
        }
        else{
          ItemId = value;
        }
    }
}

然後將此屬性設置為未映射到ContextDB上。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow