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

看板Soft_Job作者 (改)時間7年前 (2016/09/20 11:56), 編輯推噓9(9010)
留言19則, 10人參與, 最新討論串1/1
以前在看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?? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.228.126.248 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1474343795.A.037.html

09/20 12:13, , 1F
Q2 請去GOOGLE iqueryable v.s. ienumerable
09/20 12:13, 1F

09/20 12:15, , 2F
Q4. 可以,但要自己建 model class(你要的欄位的物件)
09/20 12:15, 2F

09/20 12:19, , 3F
Q1 GOOGLE: entity framework execute sql command
09/20 12:19, 3F

09/20 12:23, , 4F
所以說Q1就是只能用ExecuteSqlCommand(...)囉??
09/20 12:23, 4F

09/20 12:28, , 5F
都可以,請看https://goo.gl/0GuwaF
09/20 12:28, 5F

09/20 12:37, , 6F
Q1Q1有Extensions, Q3Q4看你程式怎麼寫
09/20 12:37, 6F

09/20 12:38, , 7F
^Q1Q2
09/20 12:38, 7F

09/20 12:44, , 8F
那個模型更新速度真的不可以忽視 用過一次就不想用第二次了.
09/20 12:44, 8F

09/20 13:00, , 9F
我都寫在procedure
09/20 13:00, 9F

09/20 13:33, , 10F
entity framework超好用Der
09/20 13:33, 10F

09/20 14:29, , 11F
1.要看數量 太大的話下SQL真的比較快
09/20 14:29, 11F

09/20 14:30, , 12F
你的問題和實作比較有關 可以看一下hibernate的文件
09/20 14:30, 12F

09/20 14:30, , 13F
範例程式碼也比較多
09/20 14:30, 13F

09/20 16:36, , 14F
單筆增刪改查很方便啊
09/20 16:36, 14F

09/21 23:20, , 15F
1. Where select 出物件後,改完所有的物件想 update
09/21 23:20, 15F

09/21 23:20, , 16F
的值,call SaveChanges 後就會 update 剛剛所改過的
09/21 23:20, 16F

09/21 23:20, , 17F
所有內容
09/21 23:20, 17F

09/21 23:24, , 18F
4. 可以用 NotMapped attribute
09/21 23:24, 18F

09/23 09:14, , 19F
先做範例再問啦.
09/23 09:14, 19F
文章代碼(AID): #1NuBDp0t (Soft_Job)