none
Entity Framework Inheritance RRS feed

  • 問題

  • Hi,

    I have a question about Entity Framework inheritance.

    the base class, file, with the common properties(ex: post_id, file_id) of the files. Then i have derived class, Hyperfile, containing some specific properties(ex: file_id, hyperlink) for hyperfiles. The other derived class, Realfile, containing some specific properties(ex: file_id, path) for realfiles.

    The problems is that if i want to know a file which is hyper or real by post_id. How do i use Linq-to-entiy
    to do it?

    for example: if the post_id=="1"

    the result is:  post_id=1   file_id=1  file_name=1   hyperlink=...
                        post_id=1   file_id=2  file-name=2   path=....

    a post_id can include many files.

    the syntax i tried is:var queryfile = from f in entities.POST
                                from p in f.FILE
                                join q in entities.FILE.OfType<HYPERFILE>() on p.FILE_ID equals q.FILE_ID 
                                from i in f.FILE join r in entities.FILE.OfType<REALFILE>() on i.FILE_ID equals  r.FILE_ID
                                where f.POST_ID == postid orderby f.POST_ID
                                select new { p.FILE_ID, p.FILE_NAME, q.FILE_HYPERLINK, r.FILE_PATH };

    but the result just show up the hyperfile...and get some wrong result.

    thanks

    2010年1月11日 上午 10:26

解答

  • Hi.
    你PO了很多EF的問題,而這些問題的答案幾乎是一樣的,之前已回過你多次,而看起來你不是很了解答案的做法,這代表你對物件導向中的繼承觀念不清楚,你應該先停止在EF上鑽研,應該先了解物件導向中繼承的概念,
    如之前回覆的,
    很多人使用EF是覺得這項產品可以很簡單的用拖拉方式產生程式與資料庫間的Model,讓後續程式在撰寫上省略到繁人的SQL語法,但在目前情況,EF並不是用來解決此問題.
    使用EF有個非常重要的前提,就是程式開發模式有採用OO,否則使用EF會弊大於利,因EF本身目前就是一個ORM framework,而ORM的目的在於解決物件導向程式開發與關聯式資料庫中的連結問題,故如果程式撰寫上不是了解OO或使用程序式導向開發,使用EF不會帶來太多的好處,如同你現在的問題.
    • 已標示為解答 howard730423 2010年1月13日 上午 12:26
    2010年1月12日 上午 12:19