EF7中的多對多關係 - 選擇包含相關數據的列表的查詢


我正在內容 - >類別表上建立一個具有以下多對多關係的博客。我使用以下代碼在EF7中生成表:

public class Category
{
    public int Id { get; set; }
    public string Name { get; set; }

    public virtual ICollection<Categorization> Categorization { get; set; }
}

public class Categorization
{
    public int ContentId { get; set; }
    public Content Content { get; set; }

    public int CategoryId { get; set; }
    public Category Category { get; set; }
}

public class Content
{
    [Key]
    public int Id { get; set; }
    public string Title { get; set; }
    public string Excerpt { get; set; }
    public string Body { get; set; }

    ...

    public virtual ICollection<Categorization> Categorization { get; set; }
}

但是,當我嘗試加載類別列表,包括與EF7查詢相關的內容時,如下所示,我收到錯誤。

public class Category
{
    public int Id { get; set; }
    public string Name { get; set; }

    public virtual ICollection<Categorization> Categorization { get; set; }
}

public class Categorization
{
    public int ContentId { get; set; }
    public Content Content { get; set; }

    public int CategoryId { get; set; }
    public Category Category { get; set; }
}

public class Content
{
    [Key]
    public int Id { get; set; }
    public string Title { get; set; }
    public string Excerpt { get; set; }
    public string Body { get; set; }

    ...

    public virtual ICollection<Categorization> Categorization { get; set; }
}

這是我調用它時得到的錯誤頁面。

處理請求時數據庫操作失敗。

AggregateException:發生一個或多個錯誤。 AggregateException:發生一個或多個錯誤。 AggregateException:發生一個或多個錯誤。 AggregateException:發生一個或多個錯誤。 SqlException:列名“Id”無效。 ApplicationDbContext Scaffold有針對這些更改的新遷移,並從命令行將它們應用於數據庫:

public class Category
{
    public int Id { get; set; }
    public string Name { get; set; }

    public virtual ICollection<Categorization> Categorization { get; set; }
}

public class Categorization
{
    public int ContentId { get; set; }
    public Content Content { get; set; }

    public int CategoryId { get; set; }
    public Category Category { get; set; }
}

public class Content
{
    [Key]
    public int Id { get; set; }
    public string Title { get; set; }
    public string Excerpt { get; set; }
    public string Body { get; set; }

    ...

    public virtual ICollection<Categorization> Categorization { get; set; }
}

有趣的說明:當我刪除該行

public class Category
{
    public int Id { get; set; }
    public string Name { get; set; }

    public virtual ICollection<Categorization> Categorization { get; set; }
}

public class Categorization
{
    public int ContentId { get; set; }
    public Content Content { get; set; }

    public int CategoryId { get; set; }
    public Category Category { get; set; }
}

public class Content
{
    [Key]
    public int Id { get; set; }
    public string Title { get; set; }
    public string Excerpt { get; set; }
    public string Body { get; set; }

    ...

    public virtual ICollection<Categorization> Categorization { get; set; }
}

它有時會正常工作,如加載分類,但這並不總是發生,有時分類不加載,我在生成的可枚舉中的每個Category類中只有分類的空引用。

熱門答案

錯誤消息說明了一切。 SqlException:列名'Id'無效

您的數據庫與項目中的模型不同。如果已啟用數據庫遷移,請運行命令

dnx ef migrations add [migration name] 
dnx ef database update

如果您不想使用數據庫遷移,則必須更新數據庫中的模型以匹配您的模型。





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