如何防止实体框架创建额外的表

时间:2012-10-27 23:49:13

标签: asp.net-mvc entity-framework

我将实体框架升级到5.0时出现问题,以说明:

public class MyClass
{
   public Foo foo;

   public ICollection<Student> Students{ get; set; }

}

public class Student
{
   public int Id {get; set;}
   public string s {get; set;}
}

public class Foo
{
  public int data {get; set}
  ...
}

EF正确创建了一个名为Students的表,因为我已经定义了从MyClass到Student的一对多关系。我使用类Foo作为封装并且具有一对一的关系。

EF 4.0没有为Foo创建单独的表,而是在MyClass表中使用属性数据Foo_data。使用EF 5.0,我将获得Foo的另一个表。

如何告诉EF不要为Foo创建表格?

2 个答案:

答案 0 :(得分:1)

我不是100%确定为什么/如何从EF4改变了,但你想要的是FooComplex Type。这应该来自Foo没有Id属性的事实 尝试强制执行:

[ComplexType]
public class Foo
{
  public int data {get; set}
  ...
}

答案 1 :(得分:0)

尝试在EF5中迁移时,我也遇到了这个问题。我发现EntityFramework已自动为DbSet添加了DbContext属性。它隐藏在课程的最底层。

我认为这与在生成视图和提供DbContext时将其选为ViewModel有关。不要提供dbContext。