【发布时间】:2012-06-15 19:54:39
【问题描述】:
我在 Linq 对象关系 (O/R) 映射器中的两个表之间划了一条线:
Order Customer
-------------- ---------------
| OrderID | | CustomerID |
| CustomerID |♦---------˃| ... |
| | | |
-------------- ---------------
注意:或者可能是
Order Customer
-------------- ---------------
| OrderID | | CustomerID |
| CustomerID |˂---------♦| ... |
| ... | | |
-------------- ---------------
我不确定;它让我可以双向拖动。
- 第一个问题,什么是箭头,什么是菱形?
假设第二个图表,Association 的基数被创建为OneToMany。这是有道理的,因为:
- 一个客户
- 有很多订单
但让我感到困惑的是Association.Unique(布尔)属性。默认为false。这是有道理的,因为它是一个 OneToMany 关联。 Order.CustomerID 不能是唯一的,否则就不是 OneToMany 关联,而是 OneToOne。
然后我可以将 OneToMany Unique 属性更改为 true。这毫无意义,因此我得出结论,Unique 不适用于Order.CustomerID,而是适用于Customer.CustomerID。但是该图已经表明Customer.CustomerID 是一个主键。当然它是唯一的,它是一个主键。
但Unique 属性未设置。这没有任何意义,所以我得出结论Unique ness 并不意味着任何一张桌子。
-
第二个问题,
Unique是什么意思?指定外部目标列是否具有唯一性约束
第三个问题:parent和child是什么?
再次假设第二个图表:
Customers.CustomerID ♦------------> Orders.CustomerID
我以Customers 表为父母。它是拥有客户意义的人。你想改变一个客户,你走到父母那里。
与此同时,Orders 子表出现并想要引用 Customer。
Parent(diamond) Child(arrowhead)
==================== =================
Customers.CustomerID (PK) ♦------------> Orders.CustomerID (FK)
除了当我查看关联的 Parent 和 Child 属性时:
子属性
-
Name:Orders
父属性
-
Name:Customer
他们想在 "child" 上创建一个名为 Orders 的属性。不不不。子是命令。他们想向父级添加一个名为Customer 的属性。不不不。父级是客户。
这意味着我必须把它倒过来,而 parent 和 child 这两个词与我的想法完全相反:
Child(diamond) Parent(arrowhead)
==================== =================
Customers.CustomerID (PK) ♦------------> Orders.CustomerID (FK)
到了这个时候,我想把我的大脑炸飞;而是花 35 分钟在 Stackoverflow 上编写问题;而不是继续对着我的电脑尖叫。
帮助。
【问题讨论】:
标签: visual-studio linq linq-to-sql orm