只想知道linq到sql自動更新了一個類(錶行對象)的ID列後調用SubmitChanges插入到該表的新行,這將是太棒了,任何人都可以證實這一點?在SubmitChanges調用之後,LINQ To SQL是否自動更新LOCAL/CLIENT ID列?
4
A
回答
3
通過查看映射屬性的[Column]
屬性(如果使用的是外部XML映射文件,則爲<Column>
),可以驗證上的IDENTITY列將被更新。
有兩個屬性,這將在[Column]
屬性進行設置,IsDbGenerated = true
,和AutoSync = OnInsert
- 第一屬性告訴LINQ目標列的值是由數據庫中創建諸如用於IDENTITY列或時間戳/ ROWVERSION列,且將後者告訴LINQ用數據庫插入後的值更新模型對象。
這兩個屬性都需要像這樣設置,以便發生預期行爲。如果您使用SqlMetal或Visual Studio設計器,那麼生成的代碼通常會自動爲您處理,只要列是IDENTITY或TIMESTAMP即可。如果稍後將列更改爲IDENTITY類型,則需要重新生成LINQ代碼,或者手動更新這些屬性。
5
是的,它只要AutoSync
和ColumnAttribute
IsDbGenerated
分別設置爲AutoSync.OnInsert
和true
。
這樣:
[Column(
Storage="_Id",
AutoSync=AutoSync.OnInsert,
DbType="Int NOT NULL IDENTITY",
IsPrimaryKey=true,
IsDbGenerated=true
)]
這些設置在設計師訪問。 AutoSync.OnInsert
和true
是默認設置。
在這裏你可以看到在行動這一點:
var db = new MessageDataContext();
db.Log = Console.Out;
Message m = new Message();
m.Text = "Hello, world!";
db.Messages.InsertOnSubmit(m);
db.SubmitChanges();
這裏表Message
有兩列Id
(自動編號PK列)和Text
。這將導致在控制檯上打印以下:
INSERT INTO [dbo].[Message]([Text])
VALUES (@p0)
SELECT CONVERT(Int,SCOPE_IDENTITY()) AS [value]
-- @p0: Input VarChar (Size = 13; Prec = 0; Scale = 0) [Hello, world!]
-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.30729.1
第二個SQL語句顯示DataContext
自動檢索分配給我們插入到數據庫中Message
身份。
因此:
db.Messages.InsertOnSubmit(m);
db.SubmitChanges();
Console.WriteLine(m.Id);
將打印分配給m
Id
。
相關問題
- 1. 調試LINQ to SQL SubmitChanges()
- 2. Linq-To-Sql SubmitChanges不更新數據庫
- 3. linq to sql submitchanges rollback
- 4. Linq to SQL Compact - 事務或只是SubmitChanges
- 5. SubmitChanges不更新,但插入新記錄。 LINQ to SQL
- 6. linq to sql c#:SubmitChanges()不更新數據庫
- 7. Linq-to-Sql SubmitChanges不更新字段...爲什麼?
- 8. LINQ to SQL:除非調用SubmitChanges,否則DataContext更改不會被反映
- 9. SubmitChanges不「提交」在LINQ to SQL
- 10. LINQ to SQL更新
- 11. 如何指示linq to sql在UpdateOnSubmit/SubmitChanges上將表列更新爲默認值?
- 12. LINQ to SQL SubmitChanges不工作FILESTREAM表
- 13. 從多線程調用LINQ-to-SQL中的SubmitChanges()
- 14. 使用Linq-To-Sql執行存儲過程後需要SubmitChanges嗎?
- 15. 是否可以在Linq to SQL中使用自動過濾器?
- 16. Linq To SQL:新手之旅
- 17. Linq to SQL - 未能更新
- 18. 批量更新LINQ to SQL
- 19. 的LINQ to SQL - 更新
- 20. LINQ不更新上.SubmitChanges()
- 21. Linq to SQL更新數據
- 22. LINQ to SQL更新問題
- 23. Linq to SQL,更新多行
- 24. 更新記錄Linq-to-SQL
- 25. LINQ to SQL - 檢索對象,修改SubmitChanges()創建新對象
- 26. 在Linq-to-Nhibernate中,是否可以在.Select()之後使用.Fetch()?
- 27. 如何看到在LINQ to SQL中SubmitChanges導致錯誤的sql?
- 28. 的LINQ to SQL自動插入行復制時更新
- 29. 錯誤的LINQ to SQL錯誤:「在調用SubmitChanges期間無法執行操作。」
- 30. 從LINQ到SQL的DataContext之前的SubmitChanges
你可以試試看看會發生什麼。如果是這樣,那麼你甚至可以在這裏發佈你自己的答案。 – Eilon 2010-01-18 04:28:17