Я создал простую схему базы данных в Visual Studio и развернул ее на SQL Server.Затем я создал сопоставления Linq-SQL, перетащив все таблицы в мою модель из проводника сервера.
Через некоторое время я решил удалить один столбец из таблицы ссылок.Я изменил схему, удалил базу данных и развернул ее снова.Я воссоздал свои отображения, удалив все объекты из диаграммы и снова перетащив все таблицы.
Проблема в том, что когда я пытаюсь вставить новую сущность в эту таблицу (в которой я отбросил свой столбец), Linq-to-SQL все еще пытается вставить туда значение, и это вызывает исключение SQL, говоря:что Szkola
имя столбца неверно.Я дважды проверил диаграмму сущностей - там нет никаких признаков столбца Szkola
, и IntelliSense также не показывает, что Szkola
может существовать.Но после проверки сгенерированного SQL (после вызова .SubmitChanges()
):
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]
я несколько раз чистил решение, несколько раз удалял и воссоздавал отображения и базу данных, и ничего не помогло.Почему это происходит и как решить эту проблему?
РЕДАКТИРОВАТЬ 1:
Я следовал инструкциям dasblinkenlight и просматривал файл * .dbml черезТекстовый редактор.Я обнаружил несколько вхождений столбца Szkola
в других таблицах, поскольку это таблица проверки, но в таблице ссылок Uczen_Opiekun
(которая вызывает проблемы) я не нашел ссылок Szkola
...
<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>
Редактировать 2:
Следуя предложению из комментариев, я проверил сгенерированную Uczen_Opiekun
сущность.Нет столбца Szkola
, но он присутствует в операторе вставки, сгенерированном Linq.Вот краткий список с полями, сгенерированными из схемы базы данных.
[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.Uczen_Opiekun")]
public partial class Uczen_Opiekun : INotifyPropertyChanging, INotifyPropertyChanged
{
private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
private string _UczenPESEL;
private string _OpiekunPESEL;
private string _StopienPokrewienstwa;
private EntityRef<Opiekun> _Opiekun;
private EntityRef<Uczen> _Uczen;
(...)
}