2008-12-02 58 views
7

我需要使用LINQ to SQL將記錄插入到沒有主鍵的表中。桌子設計不好,我無法控制表格結構。該表由幾個varchar字段,一個文本字段和一個時間戳組成。它被用作其他實體的審計追蹤。沒有主鍵的Linq插入

完成插入的最佳方法是什麼?我可以擴展此表的Linq部分類並添加一個「假」鍵嗎?無論如何,我都樂意接受任何黑客攻擊。

回答

11

LINQ to SQL不適用於此任務,因此請勿使用它。只需將插入操作轉換爲存儲過程並將過程添加到數據模型。如果你不能這樣做,用一些內聯SQL編寫一個正常的函數。

9

在設計器中打開您的DBML文件,併爲映射指定一個鍵,無論您的數據庫是否有一個。這將解決您的問題。然而,請注意,如果數據庫中沒有真正的密鑰,則不能指望用於標識或其他任何內容的列。

2

您可以使用DataContext.ExecuteCommand方法來運行您自己的自定義插入語句。

或者,您可以將primary key添加到列中,這將允許objects to be tracked通過datacontext進行插入/更新/刪除。即使列不是真正的數據庫中的強制主鍵,這也可以工作(linq會怎麼知道?)。如果您只是在插入數據,並且不會在相同的數據上下文中重新使用主鍵值,則可以。

3

我能夠使用複合鍵解決此問題。

我有一個類似的問題,只包含兩列的表:用戶名,角色。 該表格顯然不需要標識列。所以,我創建了一個包含用戶名和角色的組合鍵。這使我可以使用LINQ來添加和刪除條目。