我有一个包含多个表的数据库,这些表具有相同的名称但来自不同的模式。例如:
[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 { }
但每次数据库更改时都必须维护此代码将是一个巨大的痛苦。还有其他想法吗?
答案 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
}