要访问我们模型中的表,我将使用类似下面的代码:
var item = _entities.Table.Where(x => x.Id = id).FirstOrDefault();
_entities是我们的模型上下文,Table将是模型中表的名称。
我如何使用字符串来表示模型中表的名称? E.g:
string tableName = "Table";
var item = _entities.tableName.Where(x => x.Id = id).FirstOrDefault();
答案 0 :(得分:0)
要按名称获取属性,您可以按照以下方式执行操作:
object table = _entities.GetType().GetProperty("Table").GetValue(_entities, null);
这会将您的表格设为object
,您可以将其转换为IDbSet
或其他任何界面:
var table = _entities.GetType().GetProperty("Table").GetValue(_entities, null) as IDbSet;
请注意,这样做时,您不会具有类型安全的优势。您可以使用动态关键字,但随后您就可以将窗口中的类型安全性抛出。
如果有点脆弱,最好做一些事情:
if (tableName == "Table")
{
_entities.Table...
}
else if (tableName == "OtherTable")
{
_entities.OtherTable....
}
至少这样做,你让编译器看着你。