提问者:小点点

Entity Framework查询表示未为从未指定的列找到列


表的数据库结构如下。

CREATE TABLE [dbo].[StepVariables]
(
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [VariableId] [int] NOT NULL,
    [Value] [varchar](max) NOT NULL,
    [StepVariableId] [int] NOT NULL,
    CONSTRAINT [PK_StepVariables] 
        PRIMARY KEY CLUSTERED ([Id] ASC)) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

我的查询看起来是这样的。

List<StepVariable> stepVariables;

using (HHEDataContext context = new HHEDataContext("HHEDatabase"))
{
    stepVariables = (from sv in context.StepVariables
                     where sv.StepId == stepId
                     select sv).ToList();
}

return stepVariables;

我的实体对象看起来是这样的。

public class StepVariable
{
    public int Id { get; set; }
    public int VariableId { get; set; }
    public int StepVariableId { get; set; }
    public string Value { get; set; }
}

当我运行这个时,我得到以下错误。

执行命令定义时出错。有关详细信息,请参阅内部异常。

{System.Data.SqlClient.SqlClient.SqlConnection.OnError(SqlCeption异常,Boolean breakConnection,Action1wrapCloseInAction)
System.Data.SqlClient.TdSparser.ThrowExceptionandWarning(TdsParserStateObject stateObj,Boolean callerHasConnectionLock,Boolean asyncClose)
列名称“StepAction_ID”无效。D.RunExecuteReaderTDS(CommandBehavior cmdBehavior,RunBehavior RunBehavior,Boolean returnStream,Boolean async,Int32 timeout,task&;task,Boolean asyncWrite,SqlDataReader ds)位于System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior RunBehavior,Boolean asyncWrite,Boolean asyncWrite,task&;task,BooleanTernalDispatcher1.Dispatch[TTarget,TInterceptionContext,tResult](TTarget target,Func3操作,TInterceptionContext interceptionContext,Action3执行,Action3执行)System.Data.Entity.Infrastructure.Interception.DBCommandDispatcher.Reader(DbCommand命令,DbCommandInterceptionContext interceptionContext)System.Data.Entity.Internal.InterceptableDBCommand.ExecuteDBDataReader(

有人知道stepaction_id是从哪里来的吗?此数据库中的其他查询工作正常。


共2个答案

匿名用户

你在使用自定义惯例吗?因为默认情况下Id应该用作密钥,但可能取决于EF的版本

请在此查看https://msdn.microsoft.com/en-us/data/jj679962.aspx

无论如何,如果您可以重命名Id属性,请尝试使用StepVariableId查看错误是否消失

或者,由于您没有发布整个类,您是否有一个可以导航到StepAction实例的属性?

匿名用户

我还没有能力仅仅将其作为注释添加,但这里最有可能的情况是,数据库表中有列“stepaction_id”,这会混淆实体框架,因为模型没有处理它。

编辑:那个表有什么样的关系?