2010-10-06 31 views
1

我正在使用一個大的Entity Framework 4.0 edmx,並且需要自動化edmx的構建。但是,我需要保持使用定製T4模板的能力。使用EdmGen生成ssdl和csdl但不生成代碼?

在我們的edmx中,我們將代碼生成設置爲None,所以我們可以對edmx使用多個T4模板。當我使用EdmGen構建時,代碼是使用默認模板生成的。

我用EdmGen2進行了實驗,可以自定義以允許使用我們的T4模板,但即使顯式設置了.edmx屬性,也無法正確地複用集合名稱。

任何幫助讓EdmGen或EdmGen2在這種情況下工作將不勝感激。

回答

0

我能夠正確地使EdmGen2處理複數化。

CSDL生成器在當前版本的EdmGen2中沒有配置PluralizationService。通過一行修改強制它使用默認的多元化服務,它會構建正確的複數化csdl。

+0

明白了嗎?我相當肯定左半部分是「emsg.PluralizationService =」,但是還不知道我的方法。 – Levi 2010-12-22 01:23:58

+0

好吧,這是未經測試,但我猜那就是:PluralizationService.CreateService( 新的CultureInfo( 「EN-US」)) – Levi 2010-12-22 01:25:59

+0

答對了: emsg.PluralizationService = PluralizationService.CreateService(CultureInfo.CurrentCulture); 我唯一需要注意的是,這看起來不像EF使用的默認多元化服務那麼聰明。它錯誤地處理了一些奇怪的複數,如「狀態」,但是可以將複數形成器配置爲包含特殊情況。 – johnsondl1 2010-12-22 22:16:19