2010-05-27 48 views
1

憑藉我的應用程序,我需要將我的業務實體與EF4創建的實體分離。我需要限制實體只從他們被翻譯的地方(使用翻譯器)訪問存儲庫到商業和服務層共享的商業實體。我想通過將它們指定爲內部來限制它們。現在我的應用程序中有超過40個實體,因此手動將它們設置爲內部是一件困難的工作。在其中一個論壇中,答案建議使用T4模板。但即使這些模板從實體框架訪問說明符中讀取。當我嘗試手動嘗試將所有屬性和類訪問說明符指定爲內部時,它給了我一個錯誤,說實體集也應該設置爲internal,但是沒有相同的選項。 我正在使用VS 2010和實體框架4.任何建議?實體框架:[設置所有具有內部訪問說明符的實體]

回答

0

很難做一個搜索和替換正則表達式?右鍵單擊您的EDMX,以XML格式打開,然後按Ctrl + H。

一個實例搜索字符串是:

\<EntityType:b{.+}\> 

一個例子替換字符串是:

\<EntityType \1 a:TypeAccess="Private" xmlns:a="http://schemas.microsoft.com/ado/2006/04/codegeneration" \> 

爲了簡單起見,我還沒有檢測到現有TypeAccess。你可以使正則表達式像你喜歡的那樣複雜。

你必須選中框以告訴VS使用正則表達式。

+0

每當任何實體被定義爲公共或默認訪問說明符時,不會提及任何屬性。只有更改訪問說明符時,纔會添加屬性。所以搜索和替換也不會工作 – 2010-05-27 13:10:26

+0

當然,它會工作。搜索尚未具有可見性說明符的名稱。你可以用正則表達式和捕獲組來做到這一點。或者,如果您對此更加適應,請使用XSLT。 – 2010-05-27 13:27:08

+0

你能舉一個正則表達式的例子嗎? – 2010-05-27 13:51:43

1

單擊DataModel.edmx的白色背景。在屬性部分查找「實體容器訪問」並將其更改爲內部。