1
我運行下面的代碼:不一致的LinqToSql更新
if(ven.Source == null)ven.Source = new Source();
ven.name = (string) venue.Element("venueName");
Console.WriteLine("Venue Name: " + ven.name);
ven.Source.companyId = 1;
ven.Source.sourceReference = (string)venue.Attribute("venueID");
我通過相同的XML文件,每次運行,每次(string)venue.Attribute("venueID");
是exacly一樣的,所以爲什麼數據庫更新獲得運行保存更改?爲什麼公司ID沒有設置,但源參考呢? :
exec sp_executesql N'UPDATE [dbo].[Source]
SET [sourceReference] = @p3
WHERE ([sourceId] = @p0) AND ([companyId] = @p1) AND ([sourceReference] = @p2)',N'@p0 int,@p1 int,@p2 nchar(12),@p3 nchar(12)',@p0=71,@p1=1,@p2=N'x1830wa ',@p3=N'x1830wa '
謝謝,它不是主要/身份的一部分,在dbml中。你首先指出我並不真正瞭解,但是讓我看看並假設一個答案。字符串venueID只是'x1830wa',而字段是NCHAR(12),因此比較字符串'x1830wa'和'x1830wa'並不是絕對匹配,因此它認爲已經做出了更改。這可能是原因嗎? – Richbits 2009-10-06 16:08:46
是的;當你將它加載到數據庫之外(作爲'[n] char(12)'),它通常會包含填充(與[[n] varchar(12)'對比) - 所以如果你隨後將鍵更新爲*沒有*空白它將被視爲不同。任何*不*似乎有變化的屬性都不會出現在'UPDATE'中。 – 2009-10-06 19:06:26