繁体   English   中英

使用Entity Framework生成错误的选择查询(神秘的额外列)

[英]Wrong select query generated with Entity Framework (mysterious extra column)

我正在努力让一个简单的MVC网站工作。 在其中我使用数据库和实体框架与它进行通信(因为我已经在其他项目上做了几个月)。

在我尝试从数据库中的特定表中检索之前,一切都很顺利。 如果我查询,那么神秘地生成的选择包含该表中不存在的列(或该数据库中的任何表)。 这当然会引发一个例外,抱怨该列不存在:

描述:执行当前Web请求期间发生未处理的异常。 请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Data.SqlClient.SqlException:无效的列名称'PerformerFolder_Id'。

我创建了一个UnitOfWork对象,它使用存储库模式来检索数据,并使其尽可能简单,我公开了DataContext因此我可以手动查询它以进行测试:

var test = loUnitOfWork.Context.Set<DAL.File>();

DAL.File是由POCO生成器生成的类:

public partial class File : BaseEntity
{
    public int Id { get; set; }
    public string FilePath { get; set; }
    public string FileName { get; set; }

    public virtual ICollection<FilePerformer> FilePerformerCollection { get; set; }
    public virtual ICollection<FileProperty> FilePropertyCollection { get; set; }

    public File()
    {
        FilePerformerCollection = new List<FilePerformer>();
        FilePropertyCollection = new List<FileProperty>();
        InitializePartial();
    }
    partial void InitializePartial();
}

我有一个PerformerFolder ,它有一个Id列作为主键,但是它没有连接到文件表。

如果我在DataContext上启用调试日志记录,我会看到它运行以下查询:

SELECT 
    [Extent1].[Id] AS [Id], 
    [Extent1].[FilePath] AS [FilePath], 
    [Extent1].[FileName] AS [FileName], 
    [Extent1].[PerformerFolder_Id] AS [PerformerFolder_Id]
    FROM [dbo].[File] AS [Extent1]

我已经尝试在所有文件中搜索“PerformerFolder”而不是逻辑位置(在PerformerFolder类中)它没有发现任何东西。 它似乎是基于某些东西生成的,但我无法弄清楚是什么或在哪里。

有没有人有什么建议?

尝试搜索PerformerFolder所有代码文件而不使用'id'EF将其添加到它自己的导航属性中。

正如@Giorgi所提到的那样,它必须是某个部分的某个类,或者可能是以前版本中遗留下来的?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM