gpt4 book ai didi

c# - 使用 Entity Framework 5 运行内联 SQL 并返回跟踪的实体

转载 作者:太空宇宙 更新时间:2023-11-03 11:03:01 25 4
gpt4 key购买 nike

如何执行如下命令:

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;
}

有什么想法吗?

最佳答案

据此:http://msdn.microsoft.com/en-us/data/jj592907.aspx你想要以下内容:

public IEnumerable<T> ExecuteSelect<T>(DbContext context, string table)
{
IEnumerable<T> entities = context.Set<T>.SqlQuery("SELECT * FROM " + table).ToList();

return entities;
}

myContext.Cats.Where(c => true)返回 IQueriable<Cat> (不是数据库集)

但是

您返回的集合实际上已经完成(例如,您以后不能向您的查询添加额外的位)所以让它 Queriable 是错误的。

关于c# - 使用 Entity Framework 5 运行内联 SQL 并返回跟踪的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16983966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com