2011-02-08 44 views
1

我有一個實體映射到一個數據庫表與自動生成的標識列。
在創建新實體並呼叫SaveChanges()後,EF執行插入查詢,該插入查詢還檢索新插入記錄的新標識值。如何讓實體框架(3.5)在插入後跳過標識值的選擇?

有時我不在乎新的價值是什麼(例如,我插入一個新的日誌記錄,我並不真正關心添加的身份值)。
有什麼辦法讓EF不查詢這個值嗎?

謝謝,
伊泰

回答

3

EDMX文件定義了屬性StoreGeneratedPattern="Identity"例如自動生成的屬性。你必須直接修改EDMX,並從SSDL(也可能是CSDL部分)中刪除這個屬性。更改設計器的值只會修改不負責SQL生成的CSDL部分。問題在於,每次從數據庫更新後,SSDL將再次包含此屬性,因爲標識是在數據庫中定義的。

編輯:

以前的建議是理論上的。實際上我認爲它不起作用,因爲當你沒有將EDMX中的列定義爲標識時,它會將其實際值發送到數據庫。在數據庫中,它會引發異常,因爲您將嘗試將值插入到標識列而不設置indentity插入。

+0

+1此外,這樣做可能不是一個好主意 - 這意味着實體內存模型不再與數據庫模型保持一致(即使您承諾在插入實體後立即處置該實體) – StuartLC 2011-02-08 15:22:17