0
MyEntities db = new MyEntities(theParameter);

パラメータは次のとおりです。

 metadata=res://*/Models.My.csdl|res://*/Models.My.ssdl|res://*/Models.My.msl;provider=System.Data.SqlClient;provider connection string='Data Source=[correctIpAddress];Initial Catalog=testDbName;User ID=myUsername;Password=myPassword;MultipleActiveResultSets=True'

ウォッチをdbに追加すると、多くのテーブルがあり、その中にはテーブルtblTestTableがあります。その後、私はします:

db.CreateDatabase();

また、新しく作成されたデータベースには、tblTestTableテーブルはありません。なぜこうなった?

4

2 に答える 2

0

ウォッチをdbに追加すると、多くのテーブルがあり、その中にはテーブルtblTestTableがあります。

ObjectContextと呼ばれるインスタンスのデバッガーにウォッチを追加し、派生コンテキストのプロパティであるを監視していることを意味していると思います。これらのプロパティの1つはと呼ばれdbています。ObjectSet<T>tblTestTable

ObjectSet<T>通常、データベース内のテーブルとテーブルの間には厳密な1対1の関係はありません。独自のテーブルを表さないObjectSetをコンテキストに含めることができます。次に例を示します。

  • /のエンティティTが別の基本エンティティから派生し、この継承が階層ごとのテーブル戦略でマップされている場合、両方のエンティティは同じテーブルを使用し、通常は基本エンティティのように名前が付けられます。(通常、派生エンティティ用のこのような個別のセットは必要ありませんが、可能です。)この場合、データベースに独自のテーブルはありません。ObjectSet<T>tblTestTabletblTestTable

  • 1つのテーブルを複数のエンティティに分割できます(これは「テーブル分割」と呼ばれます)。コンテキストに2つ以上のObjectSetを含めることができますが、それらはすべて同じテーブルを使用します。

逆の方法も可能です。コンテキストに2つのObjectSetを含めることができますが、それらは3つのテーブルを生成します。これは、2つのエンティティが、独自のObjectSetを持たないデータベース内の追加の3番目の結合テーブルによって表される多対多の関係によって関連付けられている場合に発生します。

これらは、理由となる可能性のあるいくつかの指針にすぎません。モデルと関係の詳細を見ずに、質問に対してより具体的な答えを出すことは困難です。

于 2012-09-28T20:31:28.773 に答える
0

主キーがないため、テーブルは作成されませんでした。設定すると、他のものと一緒に作成されました。

于 2012-10-21T16:27:08.980 に答える