2009-08-28 51 views
0

我每次看到示例顯示瞭如何做一個更新查詢在LINQ通過執行此SQL語句。如何將Linq更新爲SqL?

// grab entity you want to update 

entity.UserId = "123"; // update the fields you want to update. 
entity.Name = "bob"; 

Dbcontext.SubmitChanges(); 

我想知道你能JUSE傳遞一個新的對象,並將它弄明白?

就像我能做到這一點?

Enity myEntity = new Entity(); 
myEntity.UserId = "123"; 
myEntity.Name = bob: 

    // grab entity record 
    // shove record ito the found record 
    // it figured out what to update and what no to update 

回答

2

取決於正是你想做的事,你要麼需要的InsertOnSubmit方法,或相應的表(即dbContext.Entities)的Attach方法。 InsertOnSubmit用於添加記錄,而Attach可用於影響UPDATE而不必先記錄SELECT記錄(您已知主鍵值)

+0

我不太瞭解linq到sql或這個附加方法。我所知道的是我向你展示的內容,你抓取記錄的位置,然後對其進行更改並提交。 – chobo2 2009-08-28 02:34:22

0

如果您因爲性能原因想要這樣做,則可以使用Attach你不應該擔心它。 LINQ to SQL的將本地緩存對象,使剛通過ID抓住一個實體來修改某些領域是很便宜的。

+0

自認倒黴性能與問題,要做到這一點(我會想出什麼,我試圖做甚至會慢一點),但我用asp.net mvc的,因爲想你可以把它作爲一種方法paramerter它那種很爛,你有到再傳給它然後去MyEntity.UserId = MyParamerterEntity.UserId;似乎有點還原。 – chobo2 2009-08-28 02:33:40

0

這是可能的連接,並堅持到數據庫,但是你可能要設置一個現場檢查併發(即上次更改)。

如果你要使用的數據上下文的連接方法,您需要在附加實體之前設置主/組合鍵(這樣你就不會觸發INotifyPropertyChanging,INotifyPropertyChanged的事件)。

1

在你擁有的DbContext可用,準備的情況下,只需添加InsertOnSubmit

Entity myEntity = new Entity(); 
myEntity.UserId = "123"; 
myEntity.Name = bob: 

Dbcontext.InsertOnSubmit(myEntity); 

Dbcontext.SubmitChanges(); 

正如方法所暗示的,它會插入到新的實體到數據庫調用的SubmitChanges的名稱。

Marc