我是否在 MVC 中构建了错误的实体

本文关键字:错误 实体 构建 是否 MVC | 更新日期: 2023-09-27 18:05:59

Goal.我有一个"礼物"实体,用于描述某人必须提供的内容(保姆、遛狗等(并带有评级。我想要一个"GiftCategory"实体,它提供一般类别描述性信息(宠物、运动、汽车等(,供某人搜索 apon,然后获得具有这些类别的所有礼物。一个"礼品"实体可以有多个与之关联的"礼品类别"实体。我希望能够搜索类别并提取已创建的所有"礼物"实体,这些实体已创建与这些类别相关联。这是我到目前为止所拥有的,但它似乎不适用于实体优先方法。也许我需要另一个连接两个实体的表,因为目前两个表的连接方式似乎不正确?

礼品实体:

public class Gift
{
    public int Id { get; set; }
    public string Name { get; set; }
    public ICollection<GiftCategory> Categories { get; set; } // is this incorrect???
    public int Rating { get; set; }
}

类别实体:

public class GiftCategory
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
}

创建的"礼品类别"表创建了一个gift_id列,该列将"礼品类别"链接回礼物(不是我想要的(!!!

似乎我需要创建一个连接两个实体的实体?像这样:

public class ConnectGifts
{
    public int Id { get; set; }
    public string GiftId{ get; set; }
    public string GiftCategoryID{ get; set; }
}

这样我就可以为礼物设置多个类别,但我不明白的是首先使用实体,我真的不需要这个实体,我只需要这个表来获取/查询"GiftCategory"实体的 id,然后获取礼物 ID 以获取所有礼物。所以创建这个实体似乎有点矫枉过正?有没有办法在不先使用代码创建第三个表/实体("ConnectGifts"(的情况下做到这一点?还是我不明白所有实体都是表,所有表都是实体?我还使用 linq-to-sql 进行所有查询。

我是否在 MVC 中构建了错误的实体

您正在寻找many-to-many关系,可以定义为:

public class Gift  
{
    public int Id { get; set; }
    public string Name { get; set; }
    public ICollection<GiftCategory> Categories { get; set; } // is this incorrect???
    public int Rating { get; set; }
}
public class GiftCategory
{
    public int Id { get; set; }
    public string Name { get; set; }
    public ICollection<Gift> Gifts { get; set; }
}

所以每个都有另一个的集合。 Gift有很多CategoriesCategory有很多Gifts。你可以像使用 ConnectGifts 一样使用 bridge 表,但 EF 不需要这样做。仅使用 GiftGiftCategory ,EF 实际上将为您创建桥表。