【发布时间】:2020-04-10 04:00:34
【问题描述】:
我认为这是一个微不足道的问题,但想问你有关它的干净解决方案。
这一次,我的数据库中有一个表Cards,已经填满了几千行。我想将此表视为只读数据源,其中包含用户可以存储在其集合中的所有可能项目。
当我为此模型创建迁移时,它会不断向Cards 表添加一个CollectionsId 列,我完全理解,但这是我想避免的。
我的问题是:我应该为UserCard 之类的卡片创建额外的类并将其用于收藏吗?如果是这样,那么它会产生一个问题,因为它迫使我用Card 验证UserCard 是否有效。它应该存储在单独的上下文中吗?解决此类问题的最佳方法是什么?
abstract class Entity
{
public int Id { get; set; }
}
class Card : Entity
{
public string Name { get; set; }
public string Set { get; set; }
}
class User : Entity
{
public string Name { get; set; }
public List<Collection> Collections { get; set; }
}
class Collection : Entity
{
public User User { get; set; }
public string Name { get; set; }
public List<Card> Cards { get; set ;}
}
【问题讨论】:
-
它没有回答你的问题,但你真的不应该使用基础实体类。它不会为您带来任何好处,并且会不必要地使模型复杂化。
-
这是为什么呢?我在很多解决方案中都见过它,它似乎对泛型类或接口很方便。
-
Base Entity 与此问题无关,并且是一个非常好的 OO 实践,尤其是在这里,您声明所有实体都将具有一个整数 Id 字段。快乐的编码,这种设计选择将简化您的旅程。
-
class Collection让我很困惑。是bridge-table在User和Card之间建立many-to-many关系吗?您的数据库中有多少张表?你能列出你的桌子吗?
标签: c# asp.net-mvc entity-framework-core