1

Linq オブジェクト リレーショナル (O/R) マッパーで 2 つのテーブル間に線をドラッグします。

 Order                  Customer
--------------           ---------------
| OrderID    |           | CustomerID  |
| CustomerID |♦---------˃| ...         |
|            |           |             |
--------------           ---------------

注:または、おそらくそうでした

 Order                    Customer
--------------           ---------------
| OrderID    |           | CustomerID  |
| CustomerID |˂---------♦| ...         |
| ...        |           |             |
--------------           ---------------

わからない; 両方向にドラッグできます。

  • 最初の質問です。矢じりは何ですか。ひし形は何ですか。

2 番目の図を想定すると、 のカーディナリティAssociationとして作成されましたOneToMany。これは理にかなっています。

  • 一人の顧客
  • 注文が多い

しかし、私を混乱させるのはAssociation.Unique(ブール) プロパティです。デフォルトはfalseです。OneToManyアソシエーションであるため、これは理にかなっています。Order.CustomerID一意にすることはできません。それ以外の場合はOneToMany関連付けではなく、OneToOneになります。

しかし、OneToMany Unique プロパティをtrueに変更することは許可されています。Uniqueこれは意味がないので、ネスは には適用されずOrder.CustomerID、 に適用されると結論付けますCustomer.CustomerID。しかし、図はすでに主キーCustomer.CustomerIDであることを示しています。もちろん、それは一意であり、主キーです。

しかし、Uniqueプロパティは設定されていません。Uniqueこれは意味がないので、ネスはどちらのテーブルも意味しないと結論付けます。

  • 2番目の質問、どういうUnique意味ですか?

    外部ターゲット列に一意性制約があるかどうかを指定します

  • 第 3 の質問:とは何ですか?

もう一度、2 番目の図を仮定します。

Customers.CustomerID ♦------------> Orders.CustomerID

私はCustomersテーブルを親にします。それは、顧客であることの意味を所有する人です。顧客について何かを変えたいと思ったら、親のところに行きます。

一方、子Ordersテーブルがやってきて、 を参照したいと考えていますCustomer

     Parent(diamond)                     Child(arrowhead)
====================                     =================
Customers.CustomerID (PK) ♦------------> Orders.CustomerID (FK)

ただし、関連付けののプロパティを見ると、次のようになります。

子プロパティ

  • Name:Orders

親財産

  • Name:Customer

彼らは、 「子」にと呼ばれるプロパティを作成したいと考えていますOrders。ダメダメダメ。子供注文です。そして、 という名前の親にプロパティを追加したいと考えていますCustomer。ダメダメダメ。親お客様です。

つまり、私はそれを逆にする必要があり、という用語は私が考えていたものとは正反対です:

      Child(diamond)                     Parent(arrowhead)
====================                     =================
Customers.CustomerID (PK) ♦------------> Orders.CustomerID (FK)

そして、この時までに、私は自分の頭脳を吹き飛ばしたいと思っています。代わりに、Stackoverflow で質問を作成するのに 35 分を費やします。コンピューターに向かって叫び続けるのではなく。

ヘルプ。

4

1 に答える 1

0

質問 2 について - Unique プロパティはおそらく、関係が OneToOne 関係であることを示しています。

SQL データベースに直接でも、特定の OneToOne 関係はありません。むしろ、あるテーブルのキーを別のテーブルにエクスポートできる外部キーがあります。このような外部キー関係は常に 1 対多です。エクスポートされたキーを含むテーブルに追加の制約を使用すると、事実上の 1 対 1 の関係にすることができます。ただし、それを行っても外部キーの関係は変更されず、外部キー テーブル内のデータに追加の条件が適用されるだけです。

質問 3 について: プロパティ名は、子オブジェクト (Order) に、親オブジェクトのインスタンスを取得するために使用できる Customer というプロパティがあることを意味します。また、親オブジェクトには Orders というプロパティがあり、これを使用して顧客の子を取得できます。

于 2012-06-26T20:12:38.220 に答える