也许这是一个愚蠢的问题。在我的
.NET8
C#
和 Entity Framework Core
项目中,我有一些表存储要在下拉列表中显示的项目,我在应用程序的不同部分使用它们。
例如,我有表 tbl_BrainExplanations 或 tbl_SmokeTypes,其中包含我要显示的列表。其他表可以有多个项目:例如,我可以将 3 种不同类型的烟雾链接到 SessionInitialDetails 中的单个记录。这是图表。
tbl_SmokeTypes的简单定义是
[Table("tbl_SmokeTypes")]
public class SmokeType
{
public long ID { get; set; }
public string? Name { get; set; }
}
当我想将表链接到我编写的代码中的SessionInitialDetails时
public virtual ICollection<SmokeType>? SmokeTypes { get; set; }
或
public virtual List<SmokeType>? SmokeTypes { get; set; }
因此,Entity Framework Core 为 tbl_SmokeTypes 创建一个表,其中还包含一个名为
SessionInitialDetailID
的字段,但这不是我想要的。因此,我自己为名为 tbl_BrainExplanations 的实体创建了一个新实体,以将该表中的多个记录关联到另一个名为 SessionDetails 的表(不在图中)。
我期望 Entity Framework Core 在定义
ICollection
或 IList
时自行创建一个连接表。但显然,事实并非如此。那么,我必须自己创建连接表还是实体框架 COre 可以做到这一点?
我认为答案是要么你使用这个属性:
[ForeignKey
这是如果您有一个与数据库匹配的 dto 层。
如果情况并非如此,那么我认为你需要引入一个与 dto 层不同的模型层。