9

由于我的数据库是使用德语表名和列名设计的,因此实体框架的默认复数功能对我不起作用。

我找到了一些讨论这个问题的资源,但它们似乎都不起作用。

我发现了什么:有 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
at System.Data.Entity.Design.EntityModelSchemaGenerator.Initialize(...)
at Microsoft.VisualStudio.TextTemplating...GeneratedTextTransformation.TransformText()
4

3 回答 3

0

我也在寻找同样的东西。也许会有所帮助。我只是不愿意为这样的基本功能付费。

编辑:

您发布的代码将与EdmGen2一起使用,它将根据您的班级为您提供 CSDL、SSDL 或 MSL 文件。

于 2012-10-04T04:18:33.063 回答
0

要完全自定义 EF Code First 中的表名,可以使用该Table属性显式指定与类关联的表名:

[Table("InternalBlogs")]
public class Blog
{
    //...
}
于 2012-10-04T04:22:57.673 回答
0

一个非常古老的问题,但如果有人仍在寻找可能的工作流程/解决方案:

我有一个类似的问题,我想从数据库中自定义模式导入 (CSDL)。解决方案/工作流程如下:

  1. 将数据库架构(我使用 Visual Studio Database Project 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 模板(根据需要进行额外的自定义)以创建输出。
于 2014-09-04T06:28:23.333 回答