0

私はEDMにまったく慣れておらず、過去にかなり多くのADO.Net関連のものを作成しました。私は3つのテーブルを持っています:

**Product:**
Prod_ID - PK

**Product_MaxLoan**
Prod_ID - PK

**Product_MinLoan**
Prod_ID - PK

MS SQL 2005でホストされているこれらのテーブルには、まだFKまたは制約が構成されておらず、概念的な1対1の関係があります。たとえば、IDが1のProductのすべての行には、Product_MaxLoanとProduct_MinLoanにそれぞれIDが1の行があります。

Visual Studio 2010で、カーディナリティが1対1に設定されるようにEDMを正しく設定したいのですが、以前はテーブルにFK制約があり、次の設定がありましたが、これでは0..1カーディナリティしか許可されませんでした。 (実際には、製品にProduct_MaxLoanまたはProduct_MinLoanがない場合があります)。

**Product:**
Prod_ID - PK

**Product_MaxLoan**
ID - PK
Prod_ID - FK

**Product_MinLoan**
ID - PK
Prod_ID - FK

質問:

  • SQL 2005でこれらのテーブルを設定するためにどのようなアドバイスをしますか?EDMの1対1の関係の場合、FKを設定しますか?
  • データベースからインポートするときにEDMが読み取るPK関係をSQL2005で設定できますか?
  • 製品には約300のプロパティが含まれているため、このすべてのデータを1つのテーブルに含めると、データベースの正規化が不十分になります(したがって、多くの1-1テーブル)。これらのすべてのプロパティを単一のEDMクラスに入れるのがベストプラクティスでしょうか?私の直感的な反応は、DBで構造化されているため(これは私のADOの遺産が前面に出てきています)、製品の論理部分ごとにクラスを持って、それを分解することです。

アドバイスをいただければ幸いです。

よろしくお願いします、

マーク

4

1 に答える 1

0

データベースでは、次の構成を使用します。

**Product:**
Prod_ID - PK

**Product_MaxLoan**
Prod_ID - PK, FK (to Product)

**Product_MinLoan**
Prod_ID - PK, FK (to Product)

これにより、データベース レベルと EF で 1 対 1 の関係が強制されます。実際の 1 : 1 はデータベースに存在できないため、リレーション自体は 1 - 0..1 ( andProductなしで存在できます) になります。Real 1 : 1 では、両方のエンティティが常に存在する必要があります。つまり、2 番目のエンティティが存在しない場合は最初のエンティティを挿入できず、最初のエンティティが存在しない場合は 2 番目のエンティティを挿入できません。参照整合性をオフにせずにどのように挿入しますか?MaxLoanMinLoan

于 2012-01-18T11:13:38.107 に答える