加深我对 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>()))
我检查了这里,但我仍然没有解决我的问题。
提前致谢
你有
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 的不同实现。