我正在尝试为使用MongoDb的非常特定的应用程序创建“某种”自定义“DbContext”。我面临一个问题:lambda表达式通用
DbSet是如何知道DbContext存在的?
我的意思是,当我写
public DbSet<Assignment> Assignments { get; set; }
public DbSet<User> Users { get; set; }
在我的DbContext
,该DbSet实例如何获取参考的DbContext类?通过反射?
但是,当我被挖成EntityFramework source code我面临的另一个问题
public virtual DbSet<TEntity> Set<TEntity>() where TEntity : class => _setInitializer.Value.CreateSet<TEntity>(this);
在此表达我不明白什么呢在“where”子句的lambda表达式。有人能启发我吗?
UPD
当我打电话给我的DbSet财产的DbContext
public class BlogPostContextContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
}
的DbSet调用的DbContext,它在数据产生必要的操作每次。 我的问题是:DbSet如何获取对DbContext的引用。 我在问DbSet和DbContext之间的底层通信。
在此先感谢。 请原谅我的英语。
Ivan Talalaev
它只是意味着'TEntity'必须是一个类 - 它约束了泛型参数 - 通常你使用这个接口,但是有一些特殊的值作为'new'(需要一个无参数的ctor,这样你就可以创建值... – Carsten
Lambda表达式语法在C#6(Expression-Bodied方法)中是新的,http://geekswithblogs.net/BlackRabbitCoder/archive/2015/05/14/c.net-little-wonders “表达体力成员在C - 6.aspx –