我试图让一个简单的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]
我已经尝试搜索所有文件&#34; PerformerFolder&#34;除了逻辑位置(在PerformerFolder类中),它没有出现任何东西。它似乎是基于某些东西生成的,但我无法弄清楚是什么或在哪里。
有人有任何建议吗?
答案 0 :(得分:0)
尝试在没有'id'的情况下搜索PerformerFolder
的所有代码文件
EF将其添加到导航属性中。
正如@Giorgi所提到的那样,它必须是某个地方的部分类,或者可能是以前构建的遗留物?