我的回答很簡(jiǎn)單,不要用數(shù)據(jù)訪問(wèn)邏輯和數(shù)據(jù)建模來(lái)擾亂表示層(整個(gè)MVC應(yīng)用程序)。
VisualStudio解決方案中至少有4個(gè)項(xiàng)目,自下而上:
1-項(xiàng)目名稱.接口(類庫(kù)、實(shí)體接口);
2-ProjectName.DAL(類庫(kù),唯一允許知道使用EF的類庫(kù),Poco實(shí)體使用另一個(gè)文件實(shí)現(xiàn)項(xiàng)目1的接口,其中使用部分類重新聲明相同的對(duì)象.);
3-ProjectName.BL(類庫(kù),業(yè)務(wù)邏輯,引用以上兩個(gè)項(xiàng)目);
4-ProjectName.Web(ASP.NETMVC應(yīng)用程序,表示層,引用兩個(gè)項(xiàng)目1和3,而不是2);
這是為了簡(jiǎn)化事情,當(dāng)然,根據(jù)我的經(jīng)驗(yàn),這是一個(gè)堅(jiān)實(shí)的設(shè)計(jì),對(duì)非常小的項(xiàng)目有點(diǎn)過(guò)分,但從長(zhǎng)遠(yuǎn)來(lái)看是有回報(bào)的。
在我看來(lái),M的MVC,Model,不是數(shù)據(jù)模型,不是EF,不是ORM綁定到特定的數(shù)據(jù)庫(kù)引擎。
這個(gè)答案當(dāng)然是主觀的,是以我個(gè)人的經(jīng)驗(yàn)為基礎(chǔ)的;