9

由於我的數據庫是使用德語的表名和列名設計的,因此實體框架的默認多元化功能對我無效。如何定製實體框架的多元化5

我已經找到了一些討論這個問題的資源,但它們都沒有工作。

我有什麼發現: 還有就是PluralisationService在那裏我可以添加映射:

PluralizationService pluralizer = 
     PluralizationService.CreateService(CultureInfo.GetCultureInfo("en-us")); 
ICustomPluralizationMapping mapping = ps as ICustomPluralizationMapping; 
mapping.AddWord("Tabelle", "Tabellen"); 

但下一步是什麼? 我曾嘗試:

EntityModelSchemaGenerator generator = new EntityModelSchemaGenerator(container); 
generator.PluralizationService = pluralizer; 
generator.GenerateMetadata(); 

,並把他們都在我的POCO T4模板。但它拋出以下異常:

EntityContainer'ContainerName'不是商店EntityContainer。參數名:storeEntityContainer
在System.Data.Entity.Design.EntityModelSchemaGenerator.Initialize(...)
在Microsoft.VisualStudio.TextTemplating ... GeneratedTextTransformation.TransformText()
+0

+1爲調查問題。這是應該問的問題。這個問題自己掙扎,沒有太多成功。 – Judo 2012-07-23 14:17:56

回答

0

我也期待同樣的事情。也許this可以提供幫助。我只是不願意爲這種基本功能付費。

編輯:

您發佈的代碼是與EdmGen2至極使用會給你CSDL,SSDL或根據您的類使用複數MSL文件。

0

完全定製的EF代碼第一次的表名,你可以使用Table屬性來顯式地指定一個類相關聯的表的名稱:

[Table("InternalBlogs")] 
public class Blog 
{ 
    //... 
} 
0

一個很古老的問題,但如果有人是仍然在尋找可能的工作流程/解決方案:

我有一個類似的問題,我想從數據庫中自定義模式導入(CSDL)。該解決方案/工作流程如下:

  1. 部署數據庫架構(我使用的Visual Studio數據庫項目VS 201X)到 本地數據庫
  2. 使用EDMGEN創建CSDL,SSDL和MSDL導入數據庫模型文件 http://msdn.microsoft.com/en-us/library/vstudio/bb387165(v=vs.110).aspx
  3. 修改EDMGEN2我如何處理多元化的和自定義的規則命名的變化,創造了EDMX文件
  4. 冉T4模板(並根據需要額外定製)創建 輸出。