.NET 4.7.2 上的 Webforms 应用程序中的 Entity Framework Core 3.1 向数据库查询添加了不存在的字段

问题描述 投票:0回答:1

我有一个简单的 WebForms 应用程序,正在从 Telerik DataAccess 迁移到 Entity Framework Core 3.1.32。除了这一点之外,几乎一切都工作正常。 EF 正在向查询添加一列不存在的列,我无法弄清楚原因。我相信我的命名约定是正确的。

SQL Server 表:

enter image description here

数据类:

[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
注释,但没有修复它。

c# sql-server entity-framework-core
1个回答
0
投票

我有一个简单的 WebForms 应用程序,正在从 Telerik DataAccess 迁移到 Entity Framework Core 3.1.32。

EF Core 3.1 早已不再支持。 EF 6(非核心)是 .NET Framework 上唯一支持的版本。

您可以看到它在查询中添加了 [e].[AttendeeId],但我不明白为什么。

通常是因为您尚未将其配置为导航属性的外键。 如果该专栏被称为

EventAttendeeId
大会就会处理它。

© www.soinside.com 2019 - 2024. All rights reserved.