如何执行命令,例如:
SELECT * FROM CATS
这表现得就像我做的一样myContext.Cats.Where(c => true);
?
谷歌建议context.Database.ExecuteSqlCommand()
,但返回一个 int。还有 context.Database.SqlQuery 看起来很有希望,但它说返回的实体没有被跟踪,我怀疑这很重要(我不太熟悉 EF 在跟踪事物方面的工作原理)。
它建议使用System.Data.Entity.DbSet<TEntity>.SqlQuery(Object[])
来跟踪它,但我不完全确定这意味着什么或如何实现它。
除了让它更加混乱之外,我还想编写一个通用方法来允许我对任何表执行特定的查询。
这是我想要的伪代码的粗略示例
public DbSet<T> ExecuteSelect<T>(DbContext context, string table)
{
DbSet<T> entities = context.RunSql("SELECT * FROM " + table);
return entities;
}
有任何想法吗?