Обновление базы данных LINQ2SQL, но только при просмотре в SQL Server - PullRequest
0 голосов
/ 07 сентября 2011

У меня действительно странная проблема.

У меня есть 3 таблицы.

  1. Позиции
  2. PositionAttachments
  3. Вложения

Я не буду утомлять вас ключами и внешними ключами, поскольку это должно быть довольно очевидно.

Если я добавлю новую позицию, вложение и позиционирование все хорошо.

Если я добавлю новое вложение в существующую запись позиции, я получу следующее.

  1. Таблица позиций обновлена, и я вижу изменения на экране
  2. В таблице вложений появилась новая запись
  3. В таблице PositionAttachments появилась новая запись
  4. Новое приложение не отображается на экране в моем приложении
  5. Закрыть приложение, перекомпилировать и запустить снова, и у меня так же, как 4
  6. Просмотр ЛЮБОЙ таблицы через SQL-сервер, и меня выгнали из сеанса, и как только я снова войду в систему, я вижу записи на экране.

Ни в коем случае не генерируется ошибка.

Обновить код записи;

    public void AddAttachmentToPosition(PositionsAvailable positionModel, Attachment attachment)
    {
        //attachment.id = Guid.NewGuid();
        dc.Attachments.InsertOnSubmit(attachment);

        PositionAttachment positionAttachment = new PositionAttachment();
        positionAttachment.PositionId = positionModel.PositionId;
        positionAttachment.AttachmentId = attachment.id;
        //positionAttachment.id = Guid.NewGuid();

        dc.PositionAttachments.InsertOnSubmit(positionAttachment);
        dc.SubmitChanges();
    }

Редактировать

Я посмотрел журнал, созданный контекстом данных, и получил его для вставки PositionAttachments. Это выглядит практически одинаково для таблицы вложений.

DECLARE @output TABLE([id] UniqueIdentifier)
INSERT INTO [dbo].[PositionAttachments]([PositionId], [AttachmentId])
OUTPUT INSERTED.[id] INTO @output
VALUES (@p0, @p1)
SELECT [id] FROM @output
-- @p0: Input UniqueIdentifier (Size = 0; Prec = 0; Scale = 0) [92a3627d-ad01-466e-a315-423c851efc5d]
-- @p1: Input UniqueIdentifier (Size = 0; Prec = 0; Scale = 0) [db566728-a313-40c7-af82-0a2f147234eb]
-- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 3.5.30729.5420

На мой взгляд, это выглядит довольно нормально. И кроме того, тот же код работает, когда я добавляю новую Позицию, а не когда я добавляю вложения к существующей позиции.

1 Ответ

1 голос
/ 07 сентября 2011

Просто догадка, что если вы попробуете:

    PositionAttachment positionAttachment = new PositionAttachment(); 
    positionAttachment.Position = positionModel; 
    positionAttachment.Attachmen = attachment; 

Хотя я думаю, что DC также должен правильно подобрать ID

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...