gpt4 book ai didi

c# - 如何创建一个临时表并在与 Entity Framework 的相同连接中使用它?

转载 作者:行者123 更新时间:2023-11-30 16:01:33 26 4
gpt4 key购买 nike

我正在尝试使用 Entity Framework 执行三个原始查询。

第一个查询基本上会创建一个临时表。第二个查询将在临时表上添加一个索引。最后,第二个查询将临时表连接到其他表以获得最终数据集。

但是每次我运行我的代码,都会得到以下错误

invalid #allRecords object.

这是我做的

using (BaseContextdb = new BaseContext())
{
using (var dbContextTransaction = db.Database.BeginTransaction())
{
try
{
db.Database.ExecuteSqlCommand("SELECT col1, col2, col3 " +
"INTO #allRecords " +
"FROM someTable " +
"WHERE col5 = 'blab' " +
"CREATE INDEX d ON #allRecords(col1, col2); ");

var results = db.Database.SqlQuery<ResuleModel>(this.GetQuery()).ToList();

db.SaveChanges();

dbContextTransaction.Commit();
}
catch (Exception)
{
dbContextTransaction.Rollback();
}
}
}

如何使用 Entity Framework 正确创建临时表?

已更新

这是 this.GetQuery() 返回的查询

SELECT b.*, c.* 
FROM b
INNER JOIN #allRecords AS a ON a.col1 = v.col1 AND a.col2 = b.col2
INNER JOIN c ON c.Id= b.Id
...
...
...

最佳答案

Entity Framework 不适用于临时表。

相反,您可能想看看 Dapper .它更干净;此外,您可以在同一个项目中并排使用 EF 和 Dapper。例如,

using (IDbConnection conn = new SqlConnection(DataBaseConnectionString))
{
conn.Open();

// If you want transaction, place it inside the query.
var entities = conn.Query<ResuleModel>(@"SELECT col1, col2, col3 ...");

result = entities.ToList();
}

仅供引用:确保先在 SSMS 中执行查询,然后再在 Dapper 中使用它。

关于c# - 如何创建一个临时表并在与 Entity Framework 的相同连接中使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38579000/

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