使用EF的PluralizingTableNameConvention()获取字符串的复数形式

时间:2016-06-14 11:43:31

标签: c# entity-framework entity-framework-6

有没有办法让完全相同的复数输出,实体框架的public static string GetPluralised(string input) { Return ChangeToPluralizingTableNameConvention(input); }; 只会传入一个字符串?{/ p>

我想要的是:

extension String {

   func trunc(_ length: Int) -> String {
    if self.characters.count > length {
        return self.substring(to: self.characters.index(self.startIndex, offsetBy: length))
    } else {
        return self
    }
  }

  func trim() -> String{
     return self.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
   }

}

我找不到它使用的基本方法。此外,如果您可以帮助指出您如何找到PluralizingTableNameConvention使用的方法,以便将来参考。

2 个答案:

答案 0 :(得分:1)

您可以覆盖自定义PluralizingTableNameConvention,如下所示:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
  modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

  modelBuilder.Conventions.Add<MyPluralizingTableNameConvention>();


  base.OnModelCreating(modelBuilder);
}

public class MyPluralizingTableNameConvention : PluralizingTableNameConvention
{
  public override void Apply(EntityType item, DbModel model)
  {
    // Do your work here
    base.Apply(item, model);
  }
}

您也可以来自IConceptualModelConvention<EntityType>, IConvention,然后通过自定义约定,您将获得更多灵活性。

答案 1 :(得分:1)

首先,您需要导入参考System.Data.Entity.Design

然后确保引用命名空间:

using System.Data.Entity.Design.PluralizationServices;

然后使用类似的东西:

    public static string ToPlural(this string s)
    {
        var ps = PluralizationService.CreateService(new System.Globalization.CultureInfo("en-gb"));
        return ps.Pluralize(s);
    }