[請益] Entity Framework (ORM)的一些問題

作者: pracinverse (改)   2016-09-20 11:56:32
以前在看ORM framework,
只知道他是把DB中的table映射到programming language class的一種技術
因為聽說會有performance的問題,而且不用ORM也可以access DB,
所以並沒有真的下去研究它。
最近發現很多不同的framework都有內建ORM,好像已經不太能忽視ORM
所以這一陣子才開始看ORM,因為工作上比較用到C#,所以是看entity framework。
遇到幾個問題想跟大家請教:
Q1. 目前entity framework是否不支援透過類似WHERE的方式一次UPDATE/DELETE多筆資料
除非自己下ExecuteSqlCommand(...) ?? (就是直接寫DELETE\UPDATE script)
Q2. QUERY時,目前entity framework看起來有2種寫法
A) LINQ to SQL,
B) SqlQuery(...) (就是直接寫SELECT script)
我的理解是:
A) 會把2個tables中的資料撈到Application中,再作join (performance較差)
B) 會把2個tables中的資料做好join後,才傳給Application (performance較佳)
這樣的理解是否正確呢??
Q3. 其他ORM framework是否有Q1和Q2一樣的問題??
只能UPDATE/DELETE單筆
以及把data拉到application中再作join的問題
Q4. ORM framework是把database中的table映射到programming language的class
是否可以做到只映射table中的某幾個columns到class裡,不要映射全部的columns??
作者: sing10407 (阿U)   2016-09-20 12:13:00
Q2 請去GOOGLE iqueryable v.s. ienumerableQ4. 可以,但要自己建 model class(你要的欄位的物件)Q1 GOOGLE: entity framework execute sql command
作者: pracinverse (改)   2016-09-20 12:23:00
所以說Q1就是只能用ExecuteSqlCommand(...)囉??
作者: sing10407 (阿U)   2016-09-20 12:28:00
都可以,請看https://goo.gl/0GuwaF
作者: async (非同步)   2016-09-20 12:37:00
Q1Q1有Extensions, Q3Q4看你程式怎麼寫^Q1Q2
作者: f124 (....)   2016-09-20 12:44:00
那個模型更新速度真的不可以忽視 用過一次就不想用第二次了.
作者: allenxxx (fufuxxx)   2016-09-20 13:00:00
我都寫在procedure
作者: abc0922001 (中士abc)   2016-09-20 13:33:00
entity framework超好用Der
作者: yyc1217 (somo)   2016-09-20 14:29:00
1.要看數量 太大的話下SQL真的比較快你的問題和實作比較有關 可以看一下hibernate的文件範例程式碼也比較多
作者: atpx (秋雨的心情)   2016-09-20 16:36:00
單筆增刪改查很方便啊
作者: joe791023 (品品~)   2016-09-21 23:20:00
1. Where select 出物件後,改完所有的物件想 update的值,call SaveChanges 後就會 update 剛剛所改過的所有內容4. 可以用 NotMapped attribute
作者: comesuck (艾米德)   2016-09-23 09:14:00
先做範例再問啦.

Links booklink

Contact Us: admin [ a t ] ucptt.com