【发布时间】:2013-02-27 00:37:11
【问题描述】:
我有一个项目,它将编译的实体框架域与动态定义的外部数据库混合在一起。用户可以在运行时提供连接字符串、表名和列名来访问外部系统。我以前一直在使用动态生成的 SQL 来访问外部系统(当然要小心地避免 SQL 注入),并将感兴趣的表读入DataTable's 并将它们具体化为 POCO's。
现在,我 90% 的视图使用 IQueryable 对象来检查 DB 查询的结构并有效地格式化/页面/操作视图。这让我在执行查询之前做了大量的工作。对于涉及外部系统记录的视图,我只是咬牙使用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)
{
// ???
}
}
我无法在网上找到任何好的资源。我如何冲出这门课?
【问题讨论】:
标签: c# .net linq linq-to-sql orm