我将实体框架升级到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
创建表格?
答案 0 :(得分:1)
我不是100%确定为什么/如何从EF4改变了,但你想要的是Foo
是Complex Type。这应该来自Foo
没有Id
属性的事实
尝试强制执行:
[ComplexType]
public class Foo
{
public int data {get; set}
...
}
答案 1 :(得分:0)
尝试在EF5中迁移时,我也遇到了这个问题。我发现EntityFramework已自动为DbSet
添加了DbContext
属性。它隐藏在课程的最底层。
我认为这与在生成视图和提供DbContext时将其选为ViewModel有关。不要提供dbContext。