LINQ to SQL - Linq尝试插入不存在的列

时间:2012-01-26 23:56:13

标签: c# sql-server linq linq-to-sql

我在Visual Studio中创建了一个简单的数据库模式并部署到SQL Server。然后我通过从服务器资源管理器将所有表拖到我的模型上来创建Linq-to-SQL映射。

一段时间后,我决定从链接表中删除一列。我修改了模式,删除了数据库并再次部署它。我通过从图中删除所有实体并再次拖动所有表来重新创建我的映射。

问题是,当我尝试向该表插入新实体(我删除了我的列)时,Linq-to-SQL仍尝试在那里插入一个值并触发SQL异常,说{{ 1}}列名无效。我仔细检查了实体图 - 那里没有Szkola列的符号,IntelliSense也没有显示Szkola可能存在。但是在检查生成的SQL之后(在调用Szkola之后):

.SubmitChanges()

我几次清理了解决方案,多次删除并重新创建了映射和数据库,没有任何帮助。为什么会这样,以及如何解决这个问题?

编辑1:

我按照 dasblinkenlight 说明操作,并通过文本编辑器查看* .dbml文件。我在其他表中发现了几个INSERT INTO [dbo].[Uczen_Opiekun]([UczenPESEL], [OpiekunPESEL], [StopienPokrewienstwa], [Szkola]) VALUES (@p0, @p1, @p2, @p3) -- @p0: Input VarChar (Size = 8000; Prec = 0; Scale = 0) [10987654321] -- @p1: Input VarChar (Size = 8000; Prec = 0; Scale = 0) [12345678910] -- @p2: Input VarChar (Size = 8000; Prec = 0; Scale = 0) [ojciec] -- @p3: Input VarChar (Size = 8000; Prec = 0; Scale = 0) [Null] 列的出现,因为它是一个验证表,但是在Szkola链接表中(导致问题)我没有找到任何Uczen_Opiekun个引用... < / p>

Szkola

编辑2:

根据评论的建议,我检查了生成的<Table Name="dbo.Uczen_Opiekun" Member="Uczen_Opiekuns"> <Type Name="Uczen_Opiekun"> <Column Name="UczenPESEL" Type="System.String" DbType="VarChar(11) NOT NULL" IsPrimaryKey="true" CanBeNull="false" /> <Column Name="OpiekunPESEL" Type="System.String" DbType="VarChar(11) NOT NULL" IsPrimaryKey="true" CanBeNull="false" /> <Column Name="StopienPokrewienstwa" Type="System.String" DbType="VarChar(64)" CanBeNull="true" /> <Association Name="Opiekun_Uczen_Opiekun" Member="Opiekun" ThisKey="OpiekunPESEL" OtherKey="PESEL" Type="Opiekun" IsForeignKey="true" /> <Association Name="Uczen_Uczen_Opiekun" Member="Uczen" ThisKey="UczenPESEL" OtherKey="PESEL" Type="Uczen" IsForeignKey="true" /> </Type> </Table> 实体。没有Uczen_Opiekun列,但它仍存在于Linq生成的insert语句中。这是一个简短的列表,其中包含从数据库模式生成的字段。

Szkola

1 个答案:

答案 0 :(得分:2)

没有魔法:Szkola必须位于dbml文件中的某个位置。在文本编辑器中打开该文件(如果使用Visual Studio,右键单击并选择“打开方式...”,然后选择“文本编辑器”)。现在搜索Szkola,并将其从XML中删除。