Entity Framework 中如何更新表中的某個欄位

來源:互聯網
上載者:User

聲明:如果你覺得這裡的布局看著不舒服:建議你來這裡閱讀:Entity Framework 中如何更新表中的某個欄位

 

通常大家特別是初學EF的朋友可能會發現EF中更新一個資料庫中某個表某一列的值一般的例子中都不會有的。

大家基本上都是使用Table和View來直接整個Entity去更新。

比如:

我們更新一個實體User(包含欄位:ID,FirstName,LastName)。

 

當然,在這個Update操作之前我們需要先插入一條資料到表中。

選用這種方式更新時,因為是attach,所以ORM會把整個表中的ID為1的欄位全部更新。對於欄位比較少的表來說這個還能接受,但是如果我們的表中欄位超過50個,那麼這個Update操作將會是很理想的。

如果我們需要的只是更新FirstName,那麼可以直接只去更新FirstName這個欄位嗎?是可以的。這就得藉助於預存程序。

在Entity Framework中使用預存程序,可能你沒試用過。 其實它和Table的使用差不多。

建立一個預存程序來更新FirstName。

  

在下一步建立ADO.NET Data Model時記得把預存程序給加進來。建立好Model後,(這裡使用的是edmx檔案自動產生Mapping代碼。沒使用POCO)。與只是使用表和視圖相比,使用預存程序作為Model的DataSource你需要在表的Mapping詳細資料下面選擇你這個表用到的預存程序,如:

這個例子中只有一個預存程序,我們只有選UpdateFirstName。編譯以後你們在edmx的設計模式中看到多了一個function():

 1    public int UpdateFirstName(Nullable<global::System.Int32> iD, global::System.String firstName) 2         { 3             ObjectParameter iDParameter; 4             if (iD.HasValue) 5             { 6                 iDParameter = new ObjectParameter("ID", iD); 7             } 8             else 9             {10                 iDParameter = new ObjectParameter("ID", typeof(global::System.Int32));11             }12     13             ObjectParameter firstNameParameter;14             if (firstName != null)15             {16                 firstNameParameter = new ObjectParameter("FirstName", firstName);17             }18             else19             {20                 firstNameParameter = new ObjectParameter("FirstName", typeof(global::System.String));21             }22     23             return base.ExecuteFunction("UpdateFirstName", iDParameter, firstNameParameter);24         }25 

EF已經自動把為預存程序產生一個function並把它匯入到了ObjectContext中。Amazing。。。。。。。。。。

OK,接下來就是我們來使用這個Update方法了。很簡單:

1 2             // Execute the Update First Name function 3             int i = EfDb.UpdateFirstName(1, "rename");4 5             // you will found the firstname has changed ,who Id is '1'6             EfDb.SaveChanges();

查詢一下結果你會發現ID為1的記錄Firstname欄位已經改變。

 

Cheers

Nic

Technorati Tags: Entity Framework

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.