LINQ2SQL更新数据库,但只有当我在SQL服务器查看

本文关键字:SQL 服务器 数据库 更新 LINQ2SQL | 更新日期: 2023-09-27 18:07:42

我有一个很奇怪的问题。

我有3张表。

    <
  1. 位置/gh>
  2. PositionAttachments
  3. 附件

我就不拿钥匙和外钥匙来烦你了,因为这应该是显而易见的。

如果我添加一个新的位置,附件和位置附件都很好。

如果我添加一个新的附件到现有的位置记录,我得到以下内容:

  1. 位置表更新,我可以看到屏幕上的变化
  2. 附件表有新记录
  3. PositionAttachments表有新记录
  4. 新附件没有出现在我的应用程序的屏幕上
  5. 关闭应用程序,重新编译并重新运行,我有相同的4
  6. 通过SQL server查看任何表,我被踢出我的会话,一旦我登录回来,我看到屏幕上的记录。

任何时候都不会产生错误。

更新记录代码;

    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插入。对于Attachments表,看起来基本相同。

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

在我看来,这看起来很正常。此外,相同的代码工作时,我添加一个新的位置,而不是当我添加附件到现有的位置。

LINQ2SQL更新数据库,但只有当我在SQL服务器查看

只是一种直觉,如果你试着:

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

尽管我认为DC也应该正确地拾取ID