Linqpad可以使用与表名相同的列名表

时间:2014-02-17 11:30:54

标签: linqpad

大家好,我对Linqpad有一个小问题,数据库设置不佳

首先,我有一个数据库,其中创建者的表具有与其用作启用字段的表相同的列。

除此之外,这些表还有“内容和值”列。

如果表中有一个名为与Table相同的列,则对该实验进行试验后,将该列重命名为Content,然后将Value重命名为具有类似名称的列名。

如果我然后尝试查询(下面),我将使用与表相同的列名松散列。有没有人知道解决这个问题的方法。因为它使得linqpad无法使用,因为这在我目前正在使用的所有数据库表中都很突出?

以下示例

如果我有

TestTable Layout

   CREATE TABLE [dbo].[TestTable](
    [TestTableID] [int] NOT NULL,
    [TestTable] [varchar](max) NULL,
    [Content] [varchar](max) NULL,
    [Value] [varchar](max) NULL
) 

enter image description here

你可以看到我错过了

2 个答案:

答案 0 :(得分:1)

这让我现在花了一个小时的时间,但我想我找到了一个适合你的解决方案。

问题是Linqpad本身的Linq-To-Sql提供程序。如果您打开Visual Studio并根据数据库创建上下文类,您会注意到TestTable列已重命名为TestTable1

所以我利用这一点,创建了一个类型为“类库”的新项目 - 目标框架4.0。

  1. 在此我添加了一个新的Linq-to-Sql类并将TestTable拖入其中。 enter image description here

  2. 进入你的class1.cs并插入:(我不知道这是否是必要的)

    //I named my context L2S. Replace accordingly

    public L2SDataContext context = new L2SDataContext();

  3. 编译

  4. 使用类型化的上下文向Linqpad添加新连接! enter image description here

  5. 连接到您的服务器

  6. 查询! the result

答案 1 :(得分:1)

如果你的桌子" foo&#34>会发生什么?包含一个名为" foo"的字段,然后将该字段重命名为" content"在linqpad。

在您的情况下,字段"内容"已存在,因此您最终只能在上下文表中创建的两个中的一个(因此"缺少"字段)。

作为一种变通方法,您可以尝试通过更改名称(表名,字段名,内容字段名)或创建具有别名的视图来避免冲突,以避免冲突。