嗨,我剛剛升級到Framework 4.0,並添加關係外鍵到我的數據庫。我想加入2個表User and Staff
並返回到UI。工作人員表具有UserId。不得不說,無論何時在datagridview上單擊用戶名,我都想向所有文本框顯示User和Staff數據。linq返回使用Tuple
我做到這一點使用元組
public IEnumerable<Tuple<User, Staff>> Get()
{
using (qDataContext db = new qDataContext())
{
try
{
var r = from u in db.Users
join s in db.Staffs on u.Id equals s.UserId
select new Tuple<User, Staff>(u, s);
return r;
}
catch (Exception ex)
{
throw;
}
}
}
但是在UI,我應該怎麼辦的結合? gvUser.DataSource = user.Get();
僅供參考,gridview只是顯示用戶名。工作人員表將存儲密碼,datejoined字段..
順便說一句,我仍然需要連接表,因爲我已經添加了外鍵引用到表..我想它應該足夠聰明,以回報我User.Staff.Password
編輯
這是我發現.. 我添加了一些關係的外鍵到我的數據庫。 和下面的代碼已經能夠回到我的用戶和員工數據Staff.UserId指向用戶ID And i don have to use the TUPLE to return those object :)!!
public IEnumerable<User> Get()
{
using (ZebraDataContext db = new ZebraDataContext())
{
try
{
var r = from u in db.Users
select u;
//join s in db.Staffs on u.Id equals s.UserId
//select new Tuple<User, Staff>(u, s);
return r.ToList();
}
catch (Exception ex)
{
throw;
}
}
}
但是,我有麻煩時,我綁定到GUI datagridview的。
private void InitializeData()
{
gvUser.DataSource = user.Get();
}
此代碼能夠顯示我的用戶數據。但是當我做gvUser_RowEnter
時,我該如何找回員工數據?
私人無效gvUser_RowEnter(對象發件人,DataGridViewCellEventArgs E) { 如果(e.RowIndex < = 0)返回;
foreach (DataGridViewRow row in gvUser.SelectedRows)
{
User user = row.DataBoundItem as User;
txtName.Text = user.Name;
txtAddress.Text = user.Address;
txtPhone.Text = user.Phone;
txtPhone2.Text = user.Phone2;
txtRemark.Text = user.Remarks;
txtPassword.Text = user.Staffs.First().Password;
}
}
txtPassword.text = user.Staffs.First().Password
< ==失敗,這個錯誤 無法訪問已釋放的對象。 對象名稱:'在Dispose之後訪問DataContext'。
當我添加監視用戶中的Staff對象。我可以看到隱藏的數據 ((User)(row.DataBoundItem))。Staffs.entities.Items this have the staff data ..
感謝您的答覆,但我寧願如果不使用第三方libarry – VeecoTech 2011-03-09 14:04:08