大家好,我的 Linqpad 有一个小问题,数据库设置不佳
首先,我有一个数据库,其中创建者的表的列名称与他用作启用字段的表相同。
除此之外,这些表还有“内容”和“值”列。
尝试此操作后,如果表中有一个与表名称相同的列,则会将该列重命名为“内容”,如果它具有类似名称的列名,则将其重命名为“值”。
如果我然后尝试查询(如下),我会丢失与表具有相同列名的列。有谁知道有什么方法可以解决这个问题。因为这使得 linqpad 无法使用,因为这在我当前使用的所有数据库表中都很突出?
下面的例子
如果我有
CREATE TABLE [dbo].[TestTable](
[TestTableID] [int] NOT NULL,
[TestTable] [varchar](max) NULL,
[Content] [varchar](max) NULL,
[Value] [varchar](max) NULL
)
如你所见,我错过了专栏
发生的情况是,如果您的表“foo”包含名为“foo”的字段,那么该字段将在 linqpad 中重命名为“content”。
在您的情况下,“内容”字段已经存在,因此您最终只能在上下文的表中创建两个字段之一(因此是“缺失”字段)。
作为解决方法,您可以尝试通过更改名称(表名称、字段名称、内容字段名称)来避免冲突,或者创建具有别名的视图以避免冲突。
这让我花了一个小时的时间,但我想我找到了适合你的解决方案。
问题出在 Linqpad 本身的 Linq-To-Sql 提供程序上。如果您打开 Visual Studio 并根据数据库创建上下文类,您会注意到列
TestTable
被重命名为 TestTable1
。
因此,我为了利用这一点所做的就是创建一个“类库”类型的新项目 - 目标 Framework 4.0。
在此我添加了一个新的 Linq-to-Sql 类并将 TestTable 拖入其中。
进入你的class1.cs并插入:(我不知道这是否有必要)
//I named my context L2S. Replace accordingly
public L2SDataContext context = new L2SDataContext();
编译
使用键入的上下文添加到 Linqpad 的新连接!
连接到您的服务器