2

例として、エンティティ フレームワークを 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}
  ...
}

MyClass から Student への 1 対多のリレーションシップを定義したため、EF は Students というテーブルを正しく作成します。クラス Foo をカプセル化として使用しており、1 対 1 の関係があります。

EF 4.0 では、 用に別のテーブルを作成せずFoo、代わりFoo_dataに MyClass テーブル内のプロパティ データを使用していました。EF 5.0 では、別のテーブルを取得していますFoo

のテーブルを作成しないように EF に指示するにはどうすればよいFooですか?

4

2 に答える 2

1

これがEF4から変更された理由/方法は100%わかりませんが、あなたが望むFooのはComplex Typeです。それは、プロパティをFoo持たないという事実から導き出されたはずです。 それを強制してみてください:Id

[ComplexType]
public class Foo
{
  public int data {get; set}
  ...
}
于 2012-10-28T13:01:46.030 に答える
0

EF5 に移行しようとしたときにも、この問題が発生しました。EntityFramework が自動的にDbSetプロパティをmy.xml に追加したことがわかりましたDbContext。それはクラスの一番下に隠されていました。

これは、ビューを生成してDbContextを提供するときにViewModelとして選択することに関係していたと思います。dbContext を指定しないでください。

于 2014-07-22T16:47:01.037 に答える