2017-05-25 116 views
0

我在DevExpress支持上發佈了這個問題,但我知道在這裏我可能會得到更快的答案,這對我來說是一個超級大問題,我一直拉着我的頭髮2天沒有任何成功。希望這裏的人可能有這個框架的經驗。DevExpress多對多關聯表

我的問題與關聯表有關,當兩個業務對象之間存在M-N關係時,該關聯表默認創建。

想法是這樣:

讓我們假設我有這些對象 - >單位和用戶

一個單位,我需要存儲狀態中的每個用戶,所以我創建了一個新的屬性從SQL,稱爲STATUS_IN_UNIT enter image description here

的問題出現時,我想訪問從代碼, 這當然是IMPO這個屬性因爲我沒有任何與此表關聯的對象 。唯一的方法是通過查詢 數據庫來訪問它。

我想要實現的是將此表顯示爲 單元DetailView內的ListView,這是強制性的,因爲必須啓用和禁用連接到UNIT 的用戶。我所看到的這些線程

https://www.devexpress.com/Support/Center/Example/Details/E2334 https://www.devexpress.com/Support/Center/Question/Details/T500887

但隨後再次我要尋找一個更平凡解到這一點, 否則這將是非常耗時創建視圖和 控制器我自己爲了處理它。所以我的問題如下:

1.如何創建一個引用這個表的類? 2.如何在單位DetailView中顯示此表並從上表訪問其屬性?

這將不勝感激,如果你會回答這個問題。

謝謝!

+0

因此,如果我正確讀取您的數據,您希望在每個單元內顯示單位列表和關聯用戶?對於這種用例,我們幾乎總是使用分層數據網格,但這可能對您無效。在事物的業務對象方面,我創建了兩個類(針對您的情況,單元和用戶),並在父類中爲子項添加了一個List 。因此,在您的單元課程中,您將有一個: 列表 usersInUnit。這應該很好地綁定到分層數據網格。 – mjw

回答

1

我假設你已經創建了一個用戶類,並在其中創建了Unit的集合,並在Unit類中創建了一個集合用戶。在這種情況下,XAF將創建一個名爲Users_Units的自動創建的中間表,該表包含這兩個主鍵,並且不能在其中添加任何屬性。如果您要添加的中間階級內部的屬性(S)或財產,你應該明確地創建類,所以這裏的代碼:

public class User : BaseObject 
{ //... your code here 

    [Association("User-UserUnits")] 
    public XPCollection<UserUnit> UserUnits 
    { 
     get 
     { 
      return GetCollection<UserUnit>("UserUnits"); 
     } 
    } 
} 

public class Unit : BaseObject 
{ // ... your code here 

    [Association("Unit-UserUnits")] 
    public XPCollection<UserUnit> UsersUnitss 
    { 
     get 
     { 
      return GetCollection<UserUnit>("UserUnits"); 
     } 
    } 
} 

public class UserUnit : BaseObject 
{ 
    User user; 
    [Association("User-UserUnits")] 
    public User User 
    { 
     get 
     { 
      return user; 
     } 
     set 
     { 
      SetPropertyValue("User", ref user, value); 
     } 
    } 

    Unit unit; 
    [Association("Unit-UserUnits")] 
    public Unit Unit 
    { 
     get 
     { 
      return unit; 
     } 
     set 
     { 
      SetPropertyValue("Unit", ref unit, value); 
     } 
    } 

    int status; 
    public int Status 
    { 
     get 
     { 
      return status; 
     } 
     set 
     { 
      SetPropertyValue("Status", ref status, value); 
     } 
    } 
} 

但當然上面的代碼,您無法鏈接/斷開鏈接對方直接在用戶和單位之間。相反,您應該手動添加詳細記錄,因爲它充當普通的主 - 細節或一對多實體關係。

+0

嗨@Achmad Mulyadi非常感謝,實際上我已經設計了我的課程,因爲我沒有意識到DevExpress中的這個問題,但我設法做了一個解決方法,可能不是最好的解決方案:) – strg