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

在每个重用映射中映射相同表的多个Linq数据模型

  •  1
  • Peter  · 技术社区  · 14 年前

    我们有一个对象模型,其中同一类“历史笔记”映射到多个对象上(目前是6个,但很快就会更多!)

    使用linqtosql的最佳实践之一不是为数据库中的每个表都有一个dbml文件,而是将其分解,这样在创建上下文时就不会对性能造成太大的影响。

    不幸的是,分隔对象的逻辑位置将历史注释保留在5个不同的DBML文件中。当linq生成器创建类时,它会在不同的命名空间中生成不同的类。

    我不想做的事情之一是将数据的“读取”分解为多个查询。

    解决方案

    设置多个模型所涉及的工作不值得代码的额外复杂性和潜在脆弱性。必须编写相同的左手、右手代码来映射历史笔记,这是太多的工作和太多的地方来保持代码同步。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Community CDub    8 年前

    最佳实践的一部分 linqtosql的一个重要特点是没有一个dbml 数据库中每个表的文件,但是 而不是把它分解成这样 没有太大的表现冲击 创建上下文时。

    你在哪儿听到的?我不同意。DataContext通常是一个相当轻量级的对象,不管表的数量如何。


    http://craftycodeblog.com/2010/07/19/linq-to-sql-single-data-context-or-multiple/

    在我看来,你应该 每个数据库一个datacontext。 这也可以解决映射问题。

    LINQ to SQL: Multiple / Single .dbml per project?

        2
  •  0
  •   jeroenh    14 年前

    一种选择是将历史注释放在它们自己的datacontext中,并将这个对象和模型的其余部分之间的关系保持为“id”(因此只保留db中的外键)。反正我也会这么做的。