Linq2Sql:如何处理具有相同名称和不同模式名称的表

时间:2009-08-07 17:11:32

标签: c# sql linq-to-sql schema

我有一个包含多个表的数据库,这些表具有相同的名称但来自不同的模式。例如:

[DatabaseName].[Schema1].[MyTable]
[DatabaseName].[Schema2].[MyTable]

当Linq2Sql为这个数据库生成代码时,它似乎只是从第一个模式中获取表并完全忽略第二个模式:

[Table(Name="[Schema1].MyTable")]
public partial class MyTable {  }

这实际上使得无法使用Linq2Sql在第二个模式上查询表。有解决方法吗?

我的第一个想法是手动编辑生成的代码,以便我有:

[Table(Name="[Schema1].MyTable")]
public partial class Schema1MyTable {  }

[Table(Name="[Schema2].MyTable")]
public partial class Schema2MyTable {  }

但每次数据库更改时都必须维护此代码将是一个巨大的痛苦。还有其他想法吗?

1 个答案:

答案 0 :(得分:1)

在Visual Studio 2010中,这似乎不再是一个问题。我创建了两个表,分别命名为目标,并将一个表绑定到架构 a ,另一个表绑定到架构 b 。我添加了DBML并将两个目标表(在服务器资源管理器中显示为目标(a)和另一个目标(b))拉到设计器上。这创建了一个名为 target 的类,另一个名为 target 1 。生成的代码(为清晰起见而编辑)显示工具现在生成的类与上面的示例代码非常相似:

[global::System.Data.Linq.Mapping.TableAttribute(Name="a.target")]
public partial class target
{ //... class implementation snipped
}

[global::System.Data.Linq.Mapping.TableAttribute(Name="b.target")]
public partial class target1
{ // ... class implementation snipped
}