C# LINQ2SQL正在更新数据库,但仅当我在SQL Server中查看时
我有一个很奇怪的问题 我有三张桌子C# LINQ2SQL正在更新数据库,但仅当我在SQL Server中查看时,c#,linq-to-sql,C#,Linq To Sql,我有一个很奇怪的问题 我有三张桌子 职位 位置附件 附件 我不会让你厌烦钥匙和外键,因为这应该是很明显的 如果我添加一个新的位置,附件和位置附件都很好 如果我在现有职位记录中添加新附件,我会得到以下结果 位置表已更新,我可以在屏幕上看到更改 附件表有新记录 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)。很简单,但由于某种原因,在我看到你的答案之前,我一直没有看到它