Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ2SQL正在更新数据库,但仅当我在SQL Server中查看时_C#_Linq To Sql - Fatal编程技术网

C# LINQ2SQL正在更新数据库,但仅当我在SQL Server中查看时

C# LINQ2SQL正在更新数据库,但仅当我在SQL Server中查看时,c#,linq-to-sql,C#,Linq To Sql,我有一个很奇怪的问题 我有三张桌子 职位 位置附件 附件 我不会让你厌烦钥匙和外键,因为这应该是很明显的 如果我添加一个新的位置,附件和位置附件都很好 如果我在现有职位记录中添加新附件,我会得到以下结果 位置表已更新,我可以在屏幕上看到更改 附件表有新记录 PositionAttachments表有新记录 新附件不会出现在我的应用程序的屏幕上 关闭应用程序,重新编译并重新运行,我得到了与4相同的结果 通过SQL server查看任何表,我就会退出会话,一旦我重新登录,我就会在屏幕上看到记录 在任

我有一个很奇怪的问题

我有三张桌子

  • 职位
  • 位置附件
  • 附件
  • 我不会让你厌烦钥匙和外键,因为这应该是很明显的

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

    如果我在现有职位记录中添加新附件,我会得到以下结果

  • 位置表已更新,我可以在屏幕上看到更改
  • 附件表有新记录
  • PositionAttachments表有新记录
  • 新附件不会出现在我的应用程序的屏幕上
  • 关闭应用程序,重新编译并重新运行,我得到了与4相同的结果
  • 通过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 insert中得到了这个。附件表的外观基本相同

    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
    

    在我看来,这很正常。此外,当我添加一个新职位时,同样的代码也会起作用,而不是当我向现有职位添加附件时。

    只是一种预感,如果您尝试:

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

    虽然我认为DC也应该正确地选择ID

    你对DC的寿命有什么策略?不管谁投了反对票,如果你能提到原因就好了!谢谢,但这也不行。这是我做过无数次的事情,所以我不明白为什么这不起作用。实际上,有了几个MOD,这有点起作用了。谢谢我认为剩下的应该相当简单了,我没有尝试将这些项添加到两个表中,而是简单地使用了这个模型。我获取PositionAvailable记录并创建一个PositionAttachment对象,然后将附件添加到其中,并使用thisPos.PositionAttachments.add(PositionAttachment)。很简单,但由于某种原因,在我看到你的答案之前,我一直没有看到它