代码之家  ›  专栏  ›  技术社区  ›  driis

任何.NET ORM都支持现成的本地化实体吗?

  •  7
  • driis  · 技术社区  · 15 年前

    我需要将本地化的实体存储在数据库中(例如,一个产品,它有一个名称,在英语和丹麦语中是不同的)。有几种众所周知的方法可以做到这一点,例如拥有某种包含本地化列值的资源表。

    但是,当我想要检索英文产品类的实例并期望name属性的值为English时,这似乎不太容易适应ORM。

    我不想重新发明轮子,我认为这是一个很常见的问题。 是否有任何ORM支持现成的实体本地化?

    因为我是微软的一员,所以对ORM最明显的选择就是实体框架4。EF4中是否有支持这一点的功能?

    3 回复  |  直到 13 年前
        1
  •  9
  •   Alex Yakunin    15 年前

    Afaik EF4不提供类似的功能。

    Dmitri Maximov 已经写了一系列关于dataobjects.net本地化实现的文章,其中的信息可能对您有所帮助,即使您正在使用(或将要使用)任何其他框架:

        2
  •  1
  •   Guillaume86    13 年前

    我有完全相同的问题(本地化内容、MS堆栈、ORM…),目前我使用的是资源/资源值表。 我使用Linq to SQL PLINQO templates 我稍微调整了一下,以便在我的实体中生成自动本地化的属性。

    模板检测到资源表的外键并创建适当的列。

    例如,如果我有一个产品表 int NameID fk列,它将创建一个 string Name 属性,根据当前线程区域性返回适当的值。

    缺点是:

    • 插入/更新的复杂性(必须使用3个表,但Linq2SQL使其不那么困难)
    • 在SQL管理中浏览表非常痛苦,因为文本列只是外键。

    我在寻找“最佳实践”解决方案时发现了这个问题,但还没有找到。

        3
  •  0
  •   Argons    15 年前

    也许您需要进一步了解,我将使用nhibernate和拦截器来捕获实体的负载,并根据应用程序的当前区域性和存储本地化字符串的某种方式对实体进行本地化。

    一些资源:

    http://elegantcode.com/2008/05/15/implementing-nhibernate-interceptors/

    http://knol.google.com/k/fabio-maulo/nhibernate-chapter-11/1nr4enxv3dpeq/14#