我是否在 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 进行所有查询。
您正在寻找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
有很多Categories
,Category
有很多Gifts
。你可以像使用 ConnectGifts
一样使用 bridge
表,但 EF 不需要这样做。仅使用 Gift
和 GiftCategory
,EF 实际上将为您创建桥表。