Я не могу удалить список объектов из-за сгенерированного сценария SQL.Моя таблица в dbml-файле:
<Table Name="person.tblProcessedAward" Member="tblProcessedAwards">
<Type Name="tblProcessedAward">
<Column Name="AwardId" Type="System.Int32" DbType="Int NOT NULL IDENTITY" IsPrimaryKey="true" CanBeNull="false" />
<Column Name="ContactId" Type="System.Int32" DbType="Int NOT NULL IDENTITY" IsPrimaryKey="true" CanBeNull="false" />
<Column Name="ProcessedDateTime" Type="System.DateTime" DbType="DateTime" CanBeNull="false" />
<Association Name="tblContact_tblProcessedAward" Member="tblContact" ThisKey="ContactId" OtherKey="ContactId" Type="tblContact" IsForeignKey="true" />
<Association Name="tblAward_tblProcessedAward" Member="tblAward" ThisKey="AwardId" OtherKey="AwardId" Type="tblAward" IsForeignKey="true" />
</Type>
</Table>
Invoking DeleteAllOnSubmit
создает следующий журнал сценариев SQL для каждого элемента в последовательности:
-- @p0: Input Int (Size = -1; Prec = 0; Scale = 0) [3]
-- @p1: Input Int (Size = -1; Prec = 0; Scale = 0) [38211]
-- @p2: Input DateTime (Size = -1; Prec = 0; Scale = 0) [4/12/2018 2:21:18 PM]
DELETE FROM [person].[tblProcessedAward] WHERE ([AwardId] = @p0) AND ([ContactId] = @p1) AND ([ProcessedDateTime] = @p2)
Если я пытаюсь сделать SELECT
вместо DELETE
, я не получаю никаких строк.Если я удаляю последнее предложение AND ([ProcessedDateTime] = @p2)
, я получаю ровно одну строку, которую хочу удалить.Стоит отметить, что значение даты не совпадает
Вопрос: Как заставить linq2sql использовать только первичные ключи при создании сценариев SQL?А в чем проблема с датами?Тот же сервис вставляет строки и читает их.UPD: заметил еще одну проблему.Сначала я удаляю ссылочные объекты, а затем родительские.Запись в журнале SQL для родительского объекта:
DELETE FROM [person].[tblAward] WHERE 0 = 1
-- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 4.7.3056.0
Я хотел бы получить пояснения по поводу этого великолепного WHERE
предложения