【问题标题】:LINQ to SQL Problem with table named 'System'名为“系统”的表的 LINQ to SQL 问题
【发布时间】:2010-11-12 14:45:49
【问题描述】:

不幸的是,我尝试与 LINQ to SQL 一起使用的数据库中有一个名为“System”的表。这样做的副作用是,一旦生成了 .dbml,就会出现巨大的命名空间冲突。

重命名表不是一种选择。

如果您有任何想法,我们将不胜感激!

【问题讨论】:

    标签: c# asp.net sql-server linq linq-to-sql


    【解决方案1】:

    在 dbml 文件中的名称之前或之后添加一个 _

    【讨论】:

    • 实际上,这就是我最终要做的,也是迄今为止最简单的解决方案。非常感谢。
    • 没问题我自己也有同样的问题:)
    【解决方案2】:

    我认为最好的选择是在设计器/映射中重命名表,即使您无法在数据库中重命名它。

    【讨论】:

    • 谢谢。我以前很怕那个。通过 DBML 更改表映射名称只是大量的手动工作。我试图避免这种情况。哦,好吧,我想我会开始的......
    【解决方案3】:

    我通常构建自己的 Linq to Sql 类,而不是使用 .dbml 文件。我使用的命名约定是 TableName + "Dto"。 Dto 代表数据传输对象。如果滚动您自己的 Dto 类不是一个选项,您可以简单地进入设计器,将您的 System 表 dbml 的名称编辑为 SystemDto。它仍然会正确映射到数据库对象,但您不会有名称冲突。如果您有兴趣看到一些手卷 dto,请告诉我 :)。希望这会有所帮助!

    【讨论】:

      【解决方案4】:

      您必须禁用“Pluralize New Objects”功能。

      看看:

      http://weblogs.asp.net/scottgu/archive/2007/05/29/linq-to-sql-part-2-defining-our-data-model-classes.aspx

      一个更简单更好的方法是在上下文中添加一个命名空间。右键单击 Linq to SQL 设计器 --> 属性 --> ContextNameSpace

      【讨论】:

      • 添加命名空间很容易并且解决了问题。谢谢。
      猜你喜欢
      • 2010-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多