我正在嘗試爲使用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 –