【发布时间】:2013-05-24 09:33:39
【问题描述】:
这是我提出的问题here 的延续。
简要总结:我有两个不同的数据库,变化很小(一个表和一个表中缺少它的外键),我希望使用 Linq-To-Sql 的导入实用程序能够在不重复逻辑的情况下用数据填充两个数据库。
我的第一种方法是使用dynamic 将两个不同的数据库上下文存储在一个变量中,但这种方法不起作用,建议我为此使用接口。
现在我遇到了以下问题:
我从我的数据库上下文类中正确提取了接口:
public interface IDataContext
{
System.Data.Linq.Table<IFieldCollection> FieldCollections { get; }
System.Data.Linq.Table<IField> Fields { get; }
}
...但为了能够通过两个不同的数据库上下文类来实现接口,我不得不用接口替换实际的 LINQ 类(FieldCollection、Field)。
现在我在类实现中返回 Table<IFieldCollection> 或 Table<IField> 时遇到问题。 db 上下文类的自动生成代码如下:
public System.Data.Linq.Table<FieldCollection> FieldCollections
{
get
{
return this.GetTable<FieldCollection>();
}
}
所以,为了在这里实现IDataContext,我需要将返回值更改为Table<IFieldCollection>。然后如何在我的属性获取器中将Table<FieldCollection> 转换为Table<IFieldCollection>而不从数据库中检索完整的表?
【问题讨论】:
标签: c# linq generics interface