2014-10-10 49 views
4

我使用实体框架6代码优先空数据库。我已经创建了相当多的POCO类,它们具有相当复杂的类层次结构(相当数量的抽象类和相当多的具体类)。我希望能够以某种方式修饰我的类,以便它们自动添加到DbContext中,而不必为每个类创建DbSet属性,但是我担心这会在尝试更新时导致问题 - 数据库。 我在这里看到了一些线程,有人似乎在问一个类似的问题,但是响应看起来更像是使用DbContext.Set()获得对现有集合的引用。我必须在DbContext上创建显式的DbSet属性吗?

+0

能否请你添加一个链接你提到的文章? – elolos 2014-10-10 15:02:38

+0

据我所知,答案是肯定的,你必须为每个POCO类添加一个'DbSet'属性。 – pquest 2014-10-10 15:08:44

+0

为什么你担心这会导致问题?你总是可以试试你知道:) – 2014-10-10 15:14:16

回答

1

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

我能偷懒,只对一些类中使用DbContext.Set <>()方法中添加明确的属性,然后引用任何其他类:

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

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

+0

非常感谢您的明确回答,尽管这非常令人失望。 – 2014-10-10 16:56:22

+1

虽然,我想我可以创建一个部分类,使用DbSets生成我想...听起来很有趣:) – 2014-10-10 16:57:04

+0

@MattKnowles - 不要低估代码生成的力量:)虽然我不确定努力是值得:“根据模型上的属性自动生成DbSet道具”与“只是在引入新模型时添加该属性” – 2014-10-10 17:21:40

相关问题