簡體   English   中英

ADO.net-復雜數據綁定

[英]ADO.net - Complex Data binding

我正在處理自己無法解決的問題。 我也試圖在網上找到解決方案,但沒有成功。

這里的細節...

關於復雜的數據綁定(在本例中為3個數據庫表)。

我在這里的表(抽象),試圖對用戶/組關聯進行建模

Table 1 - tblUsers
------------------------------
field1: Id
field2: Username
field3: Password

Table 2 - tblGroups
------------------------------
field1: Id
field2: GroupName
field3: Description

Table 3 - tblUsers_Groups
------------------------------
field1: Id
field2: Id_tblUsers
field3: Id_tblGroups

這樣,單個用戶可以屬於多個組(反之亦然)

我一直在嘗試創建一種WinForm,例如Master-Detail類型,在其中Master Grid應該在tblUsers中顯示Users,然后...根據我在那里選擇的內容,在Details Grid中顯示所選用戶所屬的組...但是使用tblGroups中的信息

有人可以幫我解決這個問題嗎?

第一個表3應該沒有ID
使用Id_tblUsers,Id_tblGroups的組合鍵

在.NET中,我的操作方式是

    public class UserGroup : Object
    {   // NO editing just add remove
        public User User { get; private set; }
        public Group Group { get; private set; }
        public override bool Equals(Object obj)
        {
            //Check for null and compare run-time types.
            if (obj == null || !(obj is UserGroup)) return false;
            UserGroup item = (UserGroup)obj;
            return (User.ID == item.User.ID && Group.ID == item.Group.ID);
        }
        public override int GetHashCode() { return (User.ID & 0xffff) + (Group.ID << 16); }
        public UserGroup(User user, Group group)
        { User = user; Group = group; }
    }

創建一個UsersGroups HashSet並將其傳遞給ctor中的Group和User。
它只是對對象的引用,因此每個人都在引用相同的數據。
覆蓋GetHash以獲得效率和等於,因此HashSet中不能有重復的UserGroup。

是返回用戶所在組的代碼

public List<Group> Groups
{   get { return usersGroups.Where(x => x.User == this)
                            .Select(x => x.Group)
                            .OrderBy(y => y.Name)
                            .ToList(); } }

然后在組中的姐姐返回用戶。

看起來似乎很復雜,但是一個大師是一件很酷的事情。 因此,當您修改UserGroup的HashSet時,它將同時反映在User和Group中

暫無
暫無

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

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