【问题标题】:Entity Framework EDMX - Entity Pluralization Fix实体框架 EDMX - 实体复数修复
【发布时间】:2012-06-18 20:35:29
【问题描述】:

我们在 PluralizationService 中发现了某些单词的一些错误,例如它认为“Campus”是复数,并通过“Campu”将其单数化。

无论如何,我们已经弄清楚如何使用 ICustomPluralizationMapping 接口向服务添加自定义映射,问题是,我们如何告诉 EntityModelCodeGenerator 使用我们的自定义服务而不是基础服务?

我们首先使用带有自定义 T4 模板的 EF 4.2 数据库。

【问题讨论】:

  • 其实你是先使用数据库。否则,您会问如何让 EF 将实体“Campus”复数到“Campuses”表中(模型优先)。另外,如果您的表名已经是单数,为什么不完全禁用复数/单数呢?
  • 丹尼,是的,你是对的,它实际上首先是数据库。如果我们禁用复数,那么我们就不会在我们的对象上下文中获得复数版本的实体。
  • Ladislav,严格定义它是重复的,但该问题中接受的答案没有帮助。链接的示例是任意的,我无法确定将自定义 EntityModelSchemaGenerator 代码放在我的场景中的位置。

标签: entity-framework-4 t4


【解决方案1】:

也许这篇文章有帮助:http://blogs.msdn.com/b/efdesign/archive/2008/12/02/pluralization.aspx

更新1: 您需要添加此代码(示例):

//Create an EDM from SSDL generator
EntityModelSchemaGenerator generator =
    new EntityModelSchemaGenerator(
        storageModel,  
        "MyNamespace",
        "MyContainer", 
        pluralizationService);

//Generate CSDL and MSL (in memory)
generator.GenerateMetadata();

到 T4 模板。为此,您必须将模板添加到您的项目中:右键单击模型设计器中的空闲空间并选择“添加代码生成项”。然后选择所需的模板,您将能够自定义此模板。

参考:http://onlinecoder.blogspot.de/2011/03/customize-entity-framework-code.htmlhttp://www.matthidinger.com/archive/2010/02/09/customizing-the-entity-framework-t4-template-suppressing-code-analysis.aspx

更新2:Text Transformations & Finding Entity Plural (Collection)

【讨论】:

  • 是的,我看过这篇文章,很有帮助,但问题是,我在哪里调用 EntityModelSchemaGenerator?
  • 但这不会改变我们在实体设计器中看到的实体名称,对吗? Afaik,在 db-first 中,T4 模板用于生成最终的 POCO 类。
猜你喜欢
  • 2011-09-08
  • 2016-08-04
  • 2020-04-11
  • 2011-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-13
相关资源
最近更新 更多