我必须在DbContext上创建显式的DbSet属性吗?

时间:2014-10-10 14:58:25

标签: .net entity-framework dbcontext dbset

我正在使用Entity Framework 6 Code First和一个空数据库。我已经创建了相当多的POCO类,它们具有相当复杂的类层次结构(相当多的抽象类和相当多的具体类)。我希望能够以某种方式装饰我的类,以便它们自动添加到DbContext而不必为每个显式创建DbSet属性,但我担心这会在我尝试更新数据库时导致问题。 我在这里看到了一些线程,其中有人似乎在问一个类似的问题,但响应似乎更适合使用DbContext.Set()来获取对现有集合的引用。

2 个答案:

答案 0 :(得分:2)

如果您依赖于代码优先迁移,那么是的,EF会在DbContext上使用反射来发现要创建的表。每个DbSet属性都映射到数据库中的表。

答案 1 :(得分:1)

我发现我不需要为每个类的DbContext添加显式DbSet属性,因为EF会自动将所有相关类添加到模型中。

我可以懒惰,只为某些类添加显式属性,然后使用DbContext.Set<>()方法引用任何其他类:

var q = from x in myContext.Set<myClass>() select x;