使用VS 2013(VB)和SQL Server 2012的使用.dbml文件LINQ
我执行存储过程使用LINQ来填充GridView控件执行存储过程。
Dim db As New GMConnectionDataContext
Dim gasHedges = db.GasHedges_create2ndMonth.ToList
存储过程返回一个结果集并一直工作正常,因为它返回期望的结果并且gridview按需显示。
我添加了一些数据到我的SQL表,并加载了网页,新的数据没有显示。如果我在SQL Server中执行存储过程,则会显示新数据。如果我在VS中执行存储过程,则会显示新数据。
现在这个奇怪的位。如果我从.dbml
文件中删除对存储过程的引用,然后重新添加它,新数据将在页面加载时显示。我知道当使用这个文件时,如果我在表中添加列,那么我需要删除它并重新将该表添加到.dbml
文件中。
当然,存储过程并非如此,因为它们将不可用。有什么我失踪?
修订
我想我知道为什么会这样发生,但我不知道如何解决它。 SQL结果集具有动态列,因为我在SQL中使用了pivot命令。这意味着,如果用户创建一个新的Gas公司,结果集将有另一列,并且datacontext必须将SP解释为已更改并仍显示旧数据集。这意味着我不能只从数据上下文中删除SP,并重新添加它,因为如果用户添加其他公司,则Web应用程序需要处理该SP。
所以我每次运行存储过程都需要这样做? – Silentbob 2014-10-13 13:35:11
另外我该怎么做 – Silentbob 2014-10-13 13:35:39
是的。您所做的任何更改都需要在.dbml文件中更新。如果你展开你的dbml,你会看到一个设计器文件,在那里是你的存储过程和表的定义。这些需要在更改时重新生成。在Visual Studio中,打开.dbml文件,您将看到您的表格和存储的特效。您可以右键单击并删除更改的内容。然后,打开您的服务器资源管理器并展开您的dbml正在使用的连接,然后拖放更新的项目。建立你的项目,一切都会更新。 – MikeHe 2014-10-13 13:40:23