调用context.Users和context.Set有什么区别<User>?

问题描述 投票:0回答:1

加深我对 ASP.NET 的了解,我有一个来自以下课程的问题:

public class AppDbContext : DbContext
{
    public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
    {
    }

    public DbSet<Route> Routes { get; set; }
}

使用

context.Routes
和使用
context.Set<Route>()
之间有什么区别?

我通过以下方式验证了两个实例不相等

Console.WriteLine(context.Routes.Equals(context.Set<Route>()))

我检查了这里,但我仍然没有解决我的问题。

提前致谢

asp.net asp.net-core asp.net-web-api dbcontext dbset
1个回答
0
投票

你有

public class AppDbContext : DbContext
{
    public DbSet<Route> Routes { get; set; }
}

你可以随时调用它

var ctx = new AppDbContext();
var list = ctx.Routes.Where(....);

但是如果你有一些通用代码怎么办?

public void DoSomething<T>(DbContext ctx)
{
    var list = ctx.Set<T>.Where(...);
}

换句话说,这是不同的,因为在第一种情况下,您使用具体的实现,而在第二种情况下,您很灵活,可以使用 Context 的不同实现。

© www.soinside.com 2019 - 2024. All rights reserved.