【问题标题】:Invalid Column name - but it isn't无效的列名 - 但它不是
【发布时间】:2012-07-26 18:33:59
【问题描述】:

当我尝试查看在 WebGrid 中显示产品数据的网页时,我收到“无效列”错误。

我目前正在运行完全相同的代码的实时版本,它可以工作。但是,此本地版本不适用于这 1 个特定页面。

如您所见,下图中引用的代码完全匹配错误消息下方描述的列名称。

我完全被难住了。我不知道现在该做什么。它告诉我“无效列”,但事实并非如此。它就在那里,我对我的代码(如下)中的任何拼写错误进行了三次检查,一切都很好!

什么给了?

<div id="grid">
  @grid.GetHtml(
    headerStyle : "HeaderStyle",
    columns: grid.Columns(
      grid.Column(
        columnName : "PartNumber",
        header : "Part Number",
        style : "PartNumberStyle"
      ),
      grid.Column(
        columnName : "Product",
        header : "Description"
      ),
      grid.Column(
        columnName : "Quantity",
        header : "Quantity"
      ),
      grid.Column(
        columnName : "ZincPlatedCL2UnitPrice",
        header : "Zinc Plated CL2 Unit Price",
        format: @<a href="?Action=Add&PartNumber=@item["PartNumber"]&Product=@item["Product"]&Type=Zinc Plated CL2 Unit Price&Units=1&UnitPrice=@item["ZincPlatedCL2UnitPrice"]&IsBoxed=0">@item["ZincPlatedCL2UnitPrice"]</a>
      ),
      grid.Column(
        columnName : "ZincPlatedCL2BoxPrice",
        header : "Zinc Plated CL2 Box Price",
        format: @<a href="?Action=Add&PartNumber=@item["PartNumber"]&Product=@item["Product"]&Type=Zinc Plated CL2 Box Price&Units=1&BoxPrice=@item["ZincPlatedCL2BoxPrice"]&IsBoxed=1">@item["ZincPlatedCL2BoxPrice"]</a>
      )
    )
  )
</div>
堆栈跟踪

[InvalidOperationException: 无效的列名 "ZincPlatedCL2UnitPrice"。]
WebMatrix.Data.DynamicRecord.VerifyColumn(字符串名称) +17193
WebMatrix.Data.DynamicRecord.get_Item(字符串名称) +17
WebMatrix.Data.DynamicRecord.TryGetMember(GetMemberBinder 活页夹, 对象和结果)+7 CallSite.Target(闭包,CallSite,对象) +140 System.Dynamic.UpdateDelegates.UpdateAndExecute1(CallSite 站点,T0 arg0)+432
Microsoft.Internal.Web.Utils.DynamicHelper.GetMemberValue(对象 obj, String memberName) +26
Microsoft.Internal.Web.Utils.DynamicHelper.TryGetMemberValue(对象 obj、String memberName、Object& 结果)+24
System.Web.Helpers.WebGridRow.TryGetMember(字符串成员名称,对象& 结果)+57 System.Web.Helpers.WebGridRow.get_Item(字符串名称)+58 CallSite.Target(Closure , CallSite , Object , String ) +100
System.Dynamic.UpdateDelegates.UpdateAndExecute2(CallSite 站点,T0 arg0, T1 arg1) +685
ASP.c__DisplayClass1f.b__1c(TextWriter __razor_template_writer) 在 c:\Users\Jase\Documents\Visual Studio 2012\WebSites\One Stop 紧固件\共享\产品\TekScrews\SelfDrillingMetalUseCL2.cshtml:98 System.Web.WebPages.HelperResult.WriteTo(TextWriter writer) +10
System.Web.Helpers.c__DisplayClass10.b__f(TextWriter tw) +42 System.Web.WebPages.HelperResult.ToString() +82
System.Web.Helpers.c__DisplayClass4.b__3(TextWriter __razor_helper_writer) +1444 System.Web.WebPages.HelperResult.ToString() +82
System.Web.WebPages.HelperResult.ToHtmlString() +9
System.Web.HttpUtility.HtmlEncode(对象值) +38
System.Web.WebPages.WebPageBase.Write(对象值) +68
ASP._Page_Shared_Products_TekScrews_SelfDrillingMetalUseCL2_cshtml.Execute() 在 c:\Users\Jase\Documents\Visual Studio 2012\WebSites\One Stop 紧固件\共享\产品\TekScrews\SelfDrillingMetalUseCL2.cshtml:82 System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +197
System.Web.WebPages.WebPage.ExecutePageHierarchy(IEnumerable`1 执行者)+69 System.Web.WebPages.WebPage.ExecutePageHierarchy() +151 System.Web.WebPages.StartPage.RunPage() +17 System.Web.WebPages.StartPage.ExecutePageHierarchy() +62
System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +76
System.Web.WebPages.WebPageHttpHandler.ProcessRequestInternal(HttpContextBase httpContext) +114

----------------------------------- --------------------------------- 版本信息:Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.0.30319.17626 堆栈跟踪:

[InvalidOperationException: 无效的列名 "ZincPlatedCL2UnitPrice"。]
WebMatrix.Data.DynamicRecord.VerifyColumn(字符串名称) +17193
WebMatrix.Data.DynamicRecord.get_Item(字符串名称) +17
WebMatrix.Data.DynamicRecord.TryGetMember(GetMemberBinder 活页夹, 对象和结果)+7 CallSite.Target(闭包,CallSite,对象) +140 System.Dynamic.UpdateDelegates.UpdateAndExecute1(CallSite 站点,T0 arg0)+432
Microsoft.Internal.Web.Utils.DynamicHelper.GetMemberValue(对象 obj, String memberName) +26
Microsoft.Internal.Web.Utils.DynamicHelper.TryGetMemberValue(对象 obj、String memberName、Object& 结果)+24
System.Web.Helpers.WebGridRow.TryGetMember(字符串成员名称,对象& 结果)+57 System.Web.Helpers.WebGridRow.get_Item(字符串名称)+58 CallSite.Target(Closure , CallSite , Object , String ) +100
System.Dynamic.UpdateDelegates.UpdateAndExecute2(CallSite 站点,T0 arg0, T1 arg1) +685
ASP.c__DisplayClass1f.b__1c(TextWriter __razor_template_writer) 在 c:\Users\Jase\Documents\Visual Studio 2012\WebSites\NameRemoved\Shared\Products\TekScrews\SelfDrillingMetalUseCL2.cshtml:98 System.Web.WebPages.HelperResult.WriteTo(TextWriter writer) +10
System.Web.Helpers.c__DisplayClass10.b__f(TextWriter tw) +42 System.Web.WebPages.HelperResult.ToString() +82
System.Web.Helpers.c__DisplayClass4.b__3(TextWriter __razor_helper_writer) +1444 System.Web.WebPages.HelperResult.ToString() +82
System.Web.WebPages.HelperResult.ToHtmlString() +9
System.Web.HttpUtility.HtmlEncode(对象值) +38
System.Web.WebPages.WebPageBase.Write(对象值) +68
ASP._Page_Shared_Products_TekScrews_SelfDrillingMetalUseCL2_cshtml.Execute() 在 c:\Users\Jase\Documents\Visual Studio 2012\WebSites\NameRemoved\Shared\Products\TekScrews\SelfDrillingMetalUseCL2.cshtml:82 System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +197
System.Web.WebPages.WebPage.ExecutePageHierarchy(IEnumerable`1 执行者)+69 System.Web.WebPages.WebPage.ExecutePageHierarchy() +151 System.Web.WebPages.StartPage.RunPage() +17 System.Web.WebPages.StartPage.ExecutePageHierarchy() +62
System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +76
System.Web.WebPages.WebPageHttpHandler.ProcessRequestInternal(HttpContextBase httpContext) +114

----------------------------------- --------------------------------- 版本信息:Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.0.30319.17626

更新日期:27/07/2012


调试时,异常指向这行代码:

format: @<a href="?Action=Add&PartNumber=@item["PartNumber"]&Product=@item["Product"]&Type=Zinc Plated CL2 Unit Price&Units=1&UnitPrice=@item["ZincPlatedCL2UnitPrice"]&IsBoxed=0">@item["ZincPlatedCL2UnitPrice"]</a>

【问题讨论】:

  • 好的,这(不修改文件)现在影响了 106 页中的 22 页。昨晚只影响了 1 页。这很奇怪。

标签: c# .net database entity-framework razor


【解决方案1】:

您是否确实检查了本地数据库以确保该列在架构中?与您的实体框架架构相比,您的本地数据库可能“旧”。

【讨论】:

  • 啊,这个数据库是重新创建的,不是基于现有的。因此,即使此代码仍然相同,这是一个全新的项目/具有全新的数据库。而且我也在本地做这一切,所以我看不出旧的会在其中发挥什么作用。
  • @EvilCokeMachine:好吧,我会仔细检查您是否肯定在与您认为的数据库通信 - 请提供有关该错误的更多详细信息,包括假设它是异常的完整堆栈跟踪。我们需要确定错误是来自 EF 本身还是来自数据库。
  • 我已经检查过我正在与正确的数据库对话。我已经把它全部翻了十几次了。您是否可以推荐任何工具来帮助更多地调试此类问题?
  • @EvilCokeMachine:Razor 对我来说意味着 API.NET MVC,而不是 WebMatrix。如果您在 WebMatrix 中有任何类型的架构定义,但可能没有此字段(或其中可能有错字),看到它只影响此页面,我一点也不感到惊讶。
  • 除了空间之外,还有“Zinc”而不是“Zinc”。这只是评论中的错字吗?
猜你喜欢
  • 2018-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多