我正在努力使一个简单的MVC网站正常工作。在其中,我正在使用数据库和 Entity Framework 与之通信(就像我在其他项目上所做的几个月一样)。
一切都进行得很好,直到我尝试从数据库中的特定表中检索之前。如果我对此进行查询,那么EF生成的选择将神秘地包含一个在该表(或该数据库中的任何表)中不存在的列。当然,这会引发异常,提示该列不存在:
我已经创建了一个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类中)之外,它没有打开任何东西。它似乎是基于某种东西生成的,但是我只是不知道是什么或在哪里。
有没有人有什么建议?
最佳答案
尝试在所有代码文件中搜索不带“id”的PerformerFolder
EF自己将其添加到导航属性中。
正如@Giorgi所提到的,它一定是某个地方的局部类,或者可能是先前构建的遗留类?
关于c# - 使用Entity Framework生成的错误选择查询(神秘的额外列),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35902433/