gpt4 book ai didi

c# - Entity Framework - 如何不将继承的类添加到数据库

转载 作者:太空宇宙 更新时间:2023-11-03 23:23:56 25 4
gpt4 key购买 nike

我有基类

public class MenuItem
{
[Key]
public Guid MenuItemID { get; set; }

public int MenuType { get; set; }
public Boolean IsActive { get; set; }
public String Details { get; set; }
}

和一个继承类

public class MenuItem_URL : MenuItem
{
public String StartURL { get; set; }
public Boolean ChangePageEnabled { get; set; }
}

我优先使用 Entity Framework 代码。

现在我想在数据库中存储 MenuItem 行而不是 MenuItem_URL

我添加到上下文中

public DbSet<MenuItem> MenuItems { get; set; }

问题是在我的数据库中为 MenuItem 创建了奇怪的表

[MenuItemID] [uniqueidentifier] NOT NULL,
[MenuType] [int] NOT NULL,
[IsActive] [bit] NOT NULL,
[Details] [nvarchar](max) NULL,
[StartURL] [nvarchar](max) NULL,
[ChangePageEnabled] [bit] NULL

为什么 Entity Framework 添加 StartURLChangePageEnabled 列?以及如何告诉他不要这样做?我只想存储基础 MenuItem 对象,而不存储来自继承对象的任何附加数据

最佳答案

可以通过使用 NotMapped 告诉 EF 忽略一个属性或整个类属性

[NotMapped]
public class MenuItem_URL : MenuItem {
public String StartURL { get; set; }
public Boolean ChangePageEnabled { get; set; }
}

或使用 Ignore<T>()流畅配置中的方法。

public class MYContext : DbContext {
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
base.OnModelCreating(modelBuilder);

modelBuilder.Ignore<MenuItem_URL>();
}

...

}

关于c# - Entity Framework - 如何不将继承的类添加到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34418708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com