4

ネットを探し回り、解決策を思いつくと思った後、私は別のレンガの壁にぶつかったようです.

データベースにテーブルがあります: Photos; PhotoID、Caption、Ordering、および 4 つのバイナリ データ セット (Original、Large、Medium、および Small) の列が含まれています (そうです、さまざまな修正を加えた古い ASP.NET スターター キットに基づいていました)。

私は L2S から Entity Framework に移行する過程にあり、それによって得られると思われるいくつかの利点があります。たとえば、写真に添付されたタグのリストを取得するために PhotosTags プロパティを使用する必要はなくなりましたが、バイナリ データの読み込みを遅らせる方法を探しています。ほとんどの場合、必要なのはキャプション、タグ、ID だけです。これらを別の領域に渡して、ユーザーが実際に画像を表示したときにバイナリ データを取得します。 .

私は次の投稿を見てきました:

  1. データテーブルを分割するには?
  2. 「テーブル分割」: 複数のエンティティ タイプを同じテーブルにマッピングします。
  3. 第 7 章: Entity Framework 学習ガイド(7.1 高価なフィールドの読み込みを遅らせる)

そして、次のようなエンティティマッピングになりました。

エンティティ図

そして、上記のリンクに従って、次の参照制約を含めるように edmx ファイルを変更しました。

<ReferentialConstraint>
  <Principal Role="Photos">
    <PropertyRef Name="PhotoID" />
  </Principal>
  <Dependent Role="PhotoDetails">
    <PropertyRef Name="PhotoID" />
  </Dependent>
</ReferentialConstraint>

モデルは検証されますが、ビルドされません-タグマッピングの問題により、次のように思います:

エラー 3019: 行 871、892 で始まるマッピング フラグメントの問題: 複合キー列のマッピングが正しくありません。テーブル siteContent_TagsPhotos (PhotoID) からテーブル siteContent_Photos (PhotoID) への外部キー制約 'FK_siteContent_TagsPhotos_siteContent_Photos': テーブル siteContent_TagsPhotos の列 (PhotoID) は、siteContent_TagsPhotos のプロパティ (PhotoID) にマップされ、テーブル siteContent_Photos の列 (PhotoID) はプロパティ (PhotoID) にマップされます。写真写真の詳細で。マッピングによる列の順序は保持されません。

写真からタグへの関係は、リンク テーブル、列 PhotoID、TagID を介して行われます。

このようなデータ構造を持つ .NET 3.5 SP1 の Entity Framework を操作するために、これらの推奨事項または同様のものを取得できた人はいますか? または、私の GoogleFU の制限を指摘できますか?

.NET 4 ではこれがすべてはるかに簡単になることはわかっていますが、それはここにはありません。私のホストがどこかにインストールすることを提案し始めるのは、リリース後おそらくしばらくかかるでしょう。

ありがとう。

4

1 に答える 1

2

私は同じ問題に遭遇しました.3.5SP1の解決策は見つかりませんでしたが、EF 4.0でこのエラーがなくなることを確認しました.

実際、潜在的な回避策は、PhotoDetails エンティティの主キーに別のフィールドを使用することです。

于 2009-09-04T05:02:18.317 に答える