当我们启动多个异步实体框架查询并并行运行时会发生什么?
他们是否并行执行?它们是否由实体框架序列化?这不受支持吗?它会导致异常吗?
public async Task QueryDatabase()
{
using (var context = new MyDbContext())
{
Task task1 = context.SomeTable1.ToListAsync();
Task task2 = context.SomeTable2.ToListAsync();
await Task.WhenAll(task1, task2);
}
}
Run Code Online (Sandbox Code Playgroud) 我不知道是否有更好的方法来使用它,DbContext因为在使用WCF时不建议将其设置为静态.所以我们每次想要访问数据库时都会创建它.
了解使用实体框架的所有优点,有些变得无用,因为我们DbContext每次都在重新创建; 因为要考虑创建大实体模型的过程,所以可能会导致更多开销.
你有什么意见?
我正在尝试过滤初始查询.我已经嵌套了包含模型的叶子.我正在尝试根据其中一个包含的属性进行过滤.例如:
using (var context = new BloggingContext())
{
var blogs = context.Blogs
.Include(blog => blog.Posts)
.ThenInclude(post => post.Author)
.ToList();
}
Run Code Online (Sandbox Code Playgroud)
我怎么能说呢.Where(w => w.post.Author == "me")?
当使用FromSqlRaw更新表中的值在EF Core 3 上运行过程时,当我查询数据库中的那些更改的值时,EF不会返回更新的值。
我已经能够重现这种行为。要使用 .net core 3.1 重现创建一个新的控制台应用程序 c#。
将下面的代码复制粘贴到您的主 Program.cs 文件中:
using System;
using System.Linq;
using Microsoft.Data.SqlClient;
using Microsoft.EntityFrameworkCore;
namespace EfCoreTest
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
// testing proc
var dbContext = new TestContext();
var tables = dbContext.TestTables.ToList();
var updated = dbContext.TestTables
.FromSqlRaw("execute testProc @Id=@Id, @Comments=@Comments", new object[]
{
new SqlParameter("Id", 1),
new SqlParameter("Comments", "testing comments 2"),
})
.ToList();
var again = dbContext.TestTables.ToList();
}
}
public class TestTable …Run Code Online (Sandbox Code Playgroud) sql-server stored-procedures entity-framework-core ef-core-3.1