[英]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.