2009-01-02 49 views
6

我正在使用LINQ to SQL來更新我的數據庫。我插入了很多記錄,當我調用SubmitChanges()時,LINQ to SQL爲每個對象執行insert和select語句。插入數據庫後,我並不真正在意更新對象。在插入後從執行select語句停止LINQ to SQL

你知道我可以阻止LINQ to SQL在插入語句之後發出select語句嗎?這應該使我的應用程序更快。

回答

0

我現在不記得這個設置,但是在設計器中,對於列的屬性,您有一些「刷新」設置。

6

您正在查找ColumnAttribute.AutoSync。如果您使用的是設計器,請檢查每列以獲取自動同步屬性並將其設置爲從不。

編輯: 好的,這並沒有爲你工作。爲自己的映射hackery加油!

當我和一些自動生成主鍵列插入,我得到這個SQL:

INSERT INTO [dbo].[TableName](fieldlist) 
VALUES (@p0, @p1, @p2, @p3, @p4) 

SELECT CONVERT(Int,SCOPE_IDENTITY()) AS [value] 

當我明白你的要求,你不希望SELECT

嘗試1:我去了主鍵字段並將自動生成設置爲false。這導致了Sql異常「IDENTITY_INSERT設置爲OFF時,無法在表'TableName'中爲標識列插入顯式值」。換句話說,linq爲該列指定了一個值。

嘗試2:我從設計器中刪除了自動生成的列。這導致Linq給我一個無效操作異常:「無法對'Table(TableName)'執行創建,更新或刪除操作,因爲它沒有主鍵。」

嘗試3:我從設計器中刪除了自動生成的列,然後將另一列標記爲主鍵。即使這個列不是數據庫中的主鍵,LINQ的DataContext將使用它來跟蹤行標識。對於給定的DataContext的觀察記錄,它必須是唯一的。

這第三次嘗試生成以下SQL(這是你要求什麼)

INSERT INTO [dbo].[TableName](fieldlist) 
VALUES (@p0, @p1, @p2, @p3, @p4) 
+0

感謝您的建議。我這樣做了,但分析器在插入和更新後仍然顯示一個選擇。我不知道爲什麼。 – 2009-01-05 21:56:33

0

我有這個問題與項目一次。我簡單地使用了context.ExecuteCommand({sql string here。})。這是針對導致性能問題的一個插入。在我看來,最簡單的修復方式,便於查看和維護,而不是通過模型挖掘。