【发布时间】:2022-11-23 04:51:03
【问题描述】:
有一个由 ASP.NET MVC 应用程序使用的 EF 项目。 EF 项目建立在遗留数据库上(使用数据库优先的方法)。
当我尝试为 Machine 加载子记录时,集合 Maschinentagessaetze 保持为空,即使数据库中的记录具有正确的外键。
有什么办法可以调试吗?我不知道可能是什么问题?从我在互联网上找到的内容来看,这应该有效。
// Controller
Machine = db09.Maschinen
.Include(x => x.Maschinentagessaetze)
.FirstOrDefault(x => x.DMasId == id);
// after this line, Machine.Maschinentagessaetze is empty
// Models
[Table("t_Maschinen")]
public partial class TMaschinen
{
public TMaschinen()
{
Maschinentagessaetze = new HashSet<TMaschinentagessaetze>();
}
[Key]
[Column("d_MAS_ID")]
public int DMasId { get; set; }
[Column("o_Bezeichnung")]
public string OBezeichnung { get; set; } = null!;
public virtual ICollection<TMaschinentagessaetze> Maschinentagessaetze { get; set; }
}
[Table("t_Maschinentagessaetze")]
public partial class TMaschinentagessaetze
{
[Key]
[Column("d_MTA_ID")]
public int DMtaId { get; set; }
[Column("o_Maschinentagessatz")]
public decimal OMaschinentagessatz { get; set; }
[Column("o_Maschine_FK")]
public int OMaschineFk { get; set; }
// with [ForeignKey("OMaschineFk")] the problem remains
public TMaschinen TMaschinen { get; set; }
}
// DbContext
public virtual DbSet<TMaschinen> Maschinen { get; set; } = null!;
public virtual DbSet<TMaschinentagessaetze> Maschinentagessaetze { get; set; } = null!;
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<TMaschinen>()
.HasMany(m => m.Maschinentagessaetze)
.WithOne(t => t.TMaschinen)
.HasForeignKey(m => m.OMaschineFk);
}
// In the database, there is a foreign key constraint on the child table:
ALTER TABLE [dbo].[t_Maschinentagessaetze] WITH CHECK
ADD CONSTRAINT [FK_t_Maschinentagessaetze_t_Maschinen]
FOREIGN KEY([o_Maschine_FK]) REFERENCES [dbo].[t_Maschinen] ([d_MAS_ID])
ON DELETE CASCADE
【问题讨论】:
-
如果加载单个
Maschinentagessaetze并包含父项Maschinen会发生什么情况?它是否找到正确的Maschinen,还是为空?另外,您使用的是 Entity Framework 还是 Entity Framework Core?
标签: c# sql-server asp.net-mvc entity-framework