【发布时间】:2016-03-09 20:57:12
【问题描述】:
我正在尝试让一个简单的 MVC 网站正常工作。在其中,我使用数据库和实体框架与其通信(就像我在其他项目中所做的几个月一样)。
在我尝试从数据库中的特定表中检索之前,一切都很好。如果我查询,EF 生成的选择神秘地包含该表(或该数据库中的任何表)中不存在的列。这当然会引发一个异常,抱怨该列不存在:
说明:在执行当前 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 是否有其他部分类?
-
PerformerFolder有Files 的列表吗? -
我认为您必须向我们展示数据模型(不仅仅是文件)或尝试创建一个简短的自包含可编译示例。从这里开始只是猜测。
标签: c# linq entity-framework-6