我有一个简单的 WebForms 应用程序,正在从 Telerik DataAccess 迁移到 Entity Framework Core 3.1.32。除了这一点之外,几乎一切都工作正常。 EF 正在向查询添加一列不存在的列,我无法弄清楚原因。我相信我的命名约定是正确的。
SQL Server 表:
数据类:
[Table("EntryAttendee")]
public class EntryAttendee
{
#region Database Properties
[Key]
public int EntryAttendeeId { get; set; }
[Required]
public int PlayToWinEntryId { get; set; }
[Required]
public int EventAttendeeId { get; set; }
[Required]
public int LikelyToBuy { get; set; }
[Required]
public int GameRating { get; set; }
[Required]
public bool AlreadyOwns { get; set; }
[Required]
public bool WantToWin { get; set; }
[Required]
public DateTime LastUpdatedDate { get; set; }
[Required]
public int LastUpdatedBy { get; set; }
[Required]
public DateTime CreatedDate { get; set; }
[Required]
public int CreatedBy { get; set; }
[Required]
public bool Deleted { get; set; }
#endregion
#region Relational Objects
public virtual EventAttendee EventAttendee { get; set; }
#endregion
#region Constructors
public EntryAttendee()
{
this.AlreadyOwns = false;
this.WantToWin = true;
this.LastUpdatedDate = this.CreatedDate = DateTime.UtcNow;
this.Deleted = false;
}
#endregion
}
捕获
DbContext
调用SQL:
执行 DbCommand 失败(6ms)[参数=[],CommandType='Text',CommandTimeout='60']
SELECT [e].[EntryAttendeeId]、[e].[AlreadyOwns]、[e].[AttendeeId]、[e].[创建者]、[e].[创建日期]、[e].[已删除]、[ e].[EventAttendeeId]、[e].[GameRating]、[e].[LastUpdatedBy]、 [e].[LastUpdatedDate]、[e].[LikelyToBuy]、[e].[PlayToWinEntryId]、[e].[WantToWin] 来自 [EntryAttendee] AS [e] WHERE [e].[已删除] <> CAST(1 AS 位)
您可以看到它在查询中添加了
[e].[AttendeeId]
,但我不明白为什么。我向 [Key]
添加了 EntryAttendeeId
注释,但没有修复它。
我有一个简单的 WebForms 应用程序,正在从 Telerik DataAccess 迁移到 Entity Framework Core 3.1.32。
EF Core 3.1 早已不再支持。 EF 6(非核心)是 .NET Framework 上唯一支持的版本。
您可以看到它在查询中添加了 [e].[AttendeeId],但我不明白为什么。
通常是因为您尚未将其配置为导航属性的外键。 如果该专栏被称为
EventAttendeeId
大会就会处理它。