我有一个项目,它将编译的实体框架域与动态定义的外部数据库混合在一起。用户可以在运行时提供连接字符串、表名和列名来访问外部系统。我之前一直在使用动态生成的 SQL 来访问外部系统(当然要小心地避免 SQL 注入),并将感兴趣的表读入DataTable
's 并将它们具体化为 POCO's。
现在,我 90% 的视图使用IQueryable
对象来检查数据库查询的结构和格式/页面/有效地操作视图。这使我可以在执行查询之前对查询进行大量工作。对于涉及外部系统记录的视图,我只是咬紧牙关使用IEnumerable.AsQueryable()
.
我非常想使用不同的解决方案。我倾向于 Linq-to-SQL(我愿意接受其他建议),但我坚持创建一个动态的MappingSource
. 此外,有些列是可选的,如果我不为每一列提供映射,我不知道 Linq-to-SQL 是否会崩溃。
public class ExternalMappingSource : MappingSource
{
public string[] KeyColumns { get; set; }
public string NameColumn { get; set; }
public string DescriptionColumn { get; set; }
public string TimestampColumn { get; set; }
protected override MetaModel CreateModel(Type dataContextType)
{
// ???
}
}
我一直无法在网上找到任何好的资源。我如何冲出这门课?