为什么我的数据库在DbSet <entityset>被注释掉时仍会创建一个表?</entityset>

时间:2011-08-09 00:19:44

标签: entity-framework

真的没有问题,这更多是为了我个人的理解。使用MVC3 + EF 4.1 Code First。我正试图在供应和法令之间建立一对一的关系。

我尝试使用传统方式制作DbSet<Provision>DbSet<Enactment>。然而,事实证明EF并不喜欢这样。我不得不更改OnModelCreation覆盖以定义主体/依赖关系(fyi Provision是principal,Enactment dependent)。出于某种原因,我有一堆错误和异常。所以我尝试了一些创意:

我在上下文中注释掉了public DbSet<Enactment> Enactments { get; set; }行。尽管如此,我的Provision类仍然需要public virtual Enactment Enactment { get; set; }属性。我认为这样做会使一个Provision只会在它的Enactment属性中保存一个Enactment类本身的对象(如果这听起来很奇怪,我很抱歉我只在一个月前开始编程而且还在学习)。这是可以接受的,因为我认为我可以通过查看Provision.Enactment.<EnactmentProperty>来访问该法案。

让我感到惊讶的是,即使使用DbSet注释,数据库仍然创建了一个映射到我的Enactment类属性的Enactments表。所以如果有什么看起来我得到了比预期更好的结果 - 但我现在还不理解我的代码背后的逻辑。正在评论特定的DbSet并在这种情况下仍能获得表格正常吗?我是在玩火还是应该退出这种方法吗?

1 个答案:

答案 0 :(得分:0)

评论DbSet并不重要。 EF代码首先使用一些约定来检查实体和映射并推断应该映射的所有类。因此,如果您有任何描述某个实体的流畅映射,或者您在DbSet中明确提到的任何实体或映射具有导航属性到其他类(可以是entity = EF能够推断其主键),那么它也将被映射。 / p>

相关问题