簡體   English   中英

DevExpress多對多關聯表

[英]DevExpress Many-To-Many Association table

我在DevExpress支持人員發布了這個問題,盡管如此,我知道在這里我可能會更快地得到答案,這對我來說是一個很大的問題,而且我已經花了2天的時間才取得成功。 希望這里的人們可能對此框架有所了解。

我的問題與兩個業務對象之間存在MN關系時默認創建的關聯表有關。

想法是這樣的:

假設我有這些對象-> UNITS和USERS

對於UNIT中的每個USER,我需要存儲一個STATUS,因此我從SQL創建了一個新的屬性,稱為STATUS_IN_UNIT 在此處輸入圖片說明

當我想以編程方式訪問此屬性時 ,就會出現問題,這當然是不可能的,因為我沒有與此表關聯的任何對象。 唯一的方法是通過查詢數據庫來訪問它。

我要實現的是將此表顯示為UNIT DetailView中的ListView,這是強制性的,因為必須啟用和禁用附加到UNIT的USERS。 我看過這些線程

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

但是話又說回來,我正在尋找一個更簡單的解決方案,否則創建我自己的視圖和控制器來處理它真的很耗時。 所以我的問題如下:

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

如果您能回答這個問題,將不勝感激。

先感謝您 !!!

我假設您已經創建了一個用戶類,並在其中創建了一個Unit的集合,並在Unit類中創建了一個集合用戶。 在這種情況下,XAF將創建一個自動創建的中間表,稱為Users_Units,該表同時具有主鍵,並且您不能在其中添加任何屬性。 如果要在中間類中添加一個或多個屬性,則應顯式創建該類,因此代碼如下:

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);
        }
    }
}

但是,當然,使用上面的代碼,您不能直接在用戶和單位之間彼此鏈接/取消鏈接。 相反,您應該手動添加明細記錄,因為它可以充當普通的主從關系或一對多實體關系。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM