Adr*_*oRR 7 c# dynamic linq-to-sql
我有以下场景:有一个数据库每年生成一个新的logTable.它始于2001年,现在有11张桌子.它们都具有相同的结构,因此具有相同的字段,索引,pk等.
我有一些叫做管理器的类 - 顾名思义 - 管理这个DB上的每个操作.对于每个不同的表我有一个经理,除了这个logTable,我只有一个经理.
我已经阅读了很多内容并尝试了不同的东西,例如使用ITable动态获取表或者我的所有表都实现的接口.不幸的是,我失去了强类型的属性,因此我无法进行任何搜索或更新或任何事情,因为我无法使用logTable.Where(q=> q.ID == paramId).
考虑到这些表具有相同的结构,从2010开始搜索日志的查询可以是从2011年开始搜索日志的查询.
我只是问这个,因为我不想为每个表重写相同的代码,因为它们在结构上是相同的.
编辑
我正在使用Linq to SQL作为我的ORM.这些表使用所有数据库操作,而不仅仅是选择.
只要每个查询返回相同的形状,您就可以使用 ExecuteQuery<Log>("Select cols From LogTable" + instance)。请注意,ExecuteQuery 是 LINQ to SQL 允许 SQL 注入的一种情况。我在http://www.thinqlinq.com/Post.aspx/Title/Does-LINQ-to-SQL-eliminate-the-possibility-of-SQL-Injection讨论了如何参数化 ExecuteQuery 。