【发布时间】:2015-05-23 07:20:33
【问题描述】:
我正在尝试为使用 MongoDb 的非常特定的应用程序创建“某种”自定义“DbContext”。我遇到了一个问题:
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
每次我在 DbContext 中调用我的 DbSet 属性时
public class BlogPostContextContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
}
DbSet 调用 DbContext 并对数据进行必要的操作。 我的问题是:DbSet 如何获取对 DbContext 的引用。 我在询问 DbSet 和 DbContext 之间的底层通信。
提前致谢。
对不起,我的英语。
伊万·塔拉拉耶夫
【问题讨论】:
-
这只是意味着
TEntity必须是一个类 - 它限制了泛型参数 - 通常你将它与接口一起使用,但有一些特殊值如new(需要一个无参数的 ctor 所以您可以创建泛型类型的值),... -
Lambda 表达式语法是 C# 6(表达式体方法)中的新语法,geekswithblogs.net/BlackRabbitCoder/archive/2015/05/14/…
标签: c# entity-framework generics lambda dbcontext