2011-09-28 82 views
1
對象角色模型

我想下面使用諾馬爲Visual Studio 2010中的ORM圖中描繪的約束模型: enter image description here三個實體約束在諾馬

商家進行交易的貨幣,當且僅當商戶使用支持該貨幣的處理器。

根據this鏈接,我試圖建模是一個連接子集約束。這裏是從上面的鏈接的例子:

enter image description here

行文一個人只能在一個項目上工作,如果那個人一處得知Spansors該項目工程。

這似乎與我試圖建模的完全相同。

我試過幾種組合如果將一個子集約束,點擊一個角色,然後對方,但總是與錯誤,如結束:

  • 約束「SubsetConstraint1」模型「ORMModel1」已經在角色球員列'1'與不兼容的類型。
  • 模型'ORMModel1'中的約束'SubsetConstraint1'在列'2'中具有不兼容類型的角色播放器。

我該如何去建模這個約束?

+0

我想這個問題是相同的:http://stackoverflow.com/questions/4300209/orm-specifying-a-value-equality-constraint-against-two-referenced-entities –

回答

0

您正朝着正確的方向前進。您需要定義超集角色對和子集角色對。每對有一個商人角色和一個貨幣角色,並且這些角色在這些對中的順序必須匹配。你可以檢查匹配我點擊約束;然後用1,1,1,2,2,1,2,2以藍色突出顯示角色序列。

超集商人角色是商人在「商人使用處理器」中扮演的角色。 超級貨幣角色是貨幣在「處理器支持貨幣」中的角色。

商家和貨幣角色的子集是「貨幣商家交易」中的兩個角色。

一個類似的例子是倉庫示例中的「DirectOrderMatch」子集約束:ActiveFacts Example Models。請注意指向PurchaseOrderItem和SalesOrderItem的兩個箭頭。在CQL,這種約束表示(以詳細的形式,該網站顯示的簡潔形式):

some Purchase Order Item matches some Sales Order Item 
    only if that Purchase Order Item is for some Product that is in that Sales Order Item; 

因此,通過比較的方式,寫在CQL的例子如下:

some Merchant transacts in some Currency 
    only if that Merchant uses some Processor that supports that Currency;