我是 linq to sql 的新手。我的查询是关于使用搜索按钮用一个站点号再获取两行。使用外键的表之间有一个链接。让我清除一下数据库的样子。
你好,
我有四个表 tbl_user、tbl_Site、tbl_usersite 和 tbl_credentials。
表列:
tbl_Site : SiteId、SiteName、SiteNumb
tbl_Credentials:CredId、用户名、密码
tbl_User : UserId, CredIdFK, Forename , Surname
tbl_Usersite : UsersiteID, Site_IdFK, User_IdFk
表关系:
(tbl_Usersite) 表是链接表(tbl_User 和 tbl_Site)
在 tbl_user 表中 Cred_Id 是 FK
站点样本数据:
SiteId、SiteName、SiteNumb
- 10 , XXXX , 1234
- 11, 年年, 5436
- 12、ZZZZ、3789
凭证样本数据:
CredId、用户名、密码
- 10、谷歌、雅虎
- 11、博客、论坛
- 12、日期、时间
- 13、LINQ、SQL
- 14、总计、成本
用户样本数据:
UserId, CredId, Forename, Surname
- 187、10、莎拉、托马斯
- 196、11、马克、希尔
- 195、12、彼得、霍奇
- 197、13、布拉德、皮特
- 198、14、布朗、托马斯
用户站点样本数据:
用户站点标识 , 站点标识 , 用户标识
1 , 10 , 187
2 , 10 , 196
3 , 10 , 195
4、11、197
5、12、198
客户端在文本框中输入站点编号,然后单击搜索按钮。他们应该得到Username 、 Password 、 UserId 、 ForeName 和 Surname。我在按钮单击事件中的示例代码是
protected void btnsearch_Click(object sender, EventArgs e)
{
string Site = txtsitenumb.Text;
SiteDataContext sitenumb = new SiteDataContext();
try
{
var siteID = (from sn in sitenumb.tbl_sites
where sn.site_number == Site
select sn.site_id_PK).First();
var UserID = (from sn2 in sitenumb.tbl_usersites
**where sn2.usersite_site_id_FK == siteID
select sn2.usersite_user_id_FK).First();**
// Where the Star Marked area doesnt give the result
if there is an access for more than one Site for the single User
var CredID = (from sn3 in sitenumb.tbl_users
where sn3.user_id_PK == UserID
select sn3.user_credentials_id_FK).First();
var UserName = (from sn4 in sitenumb.tbl_credentials
where sn4.credentials_id_PK == CredID
select sn4.credentials_username).First();
var PassWord = (from sn5 in sitenumb.tbl_credentials
where sn5.credentials_id_PK == CredID
select sn5.credentials_password).First();
var FirstName = (from sn6 in sitenumb.tbl_users
where sn6.user_id_PK == UserId
select sn6.user_forename).First();
var Lastname = (from sn7 in sitenumb.tbl_users
where sn7.user_id_PK == UserId
select sn7.user_surname).First();
fields s = new fields();
s.UserName = UserName;
s.Password = PassWord;
s.UserId = UserID .ToString();
s.FirstName = FirstName;
s.LastName = Lastname;
data.Add(s);
ViewState["idata"] = data;
gridview1.DataSource = data;
gridview1.DataBind();
}
catch (Exception)
{
Label1.Text = "File Not Found";
}
protected void Page_Load(object sender, EventArgs e)
{
this.Form.DefaultButton = this.btnsearch.UniqueID;
data = ViewState["idata"] as List<fields>;
if (data == null)
data = new List<fields>();
}
[Serializable]
public class fields
{
public string UserName { get; set; }
public string Password { get; set; }
public string UserId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string TimeZone { get; set; }
}
如果它是单用户的单站点访问,则此代码可以正常工作。请帮助我显示与所有站点关联的用户。
** 例如:**
如果用户输入 SiteNumb 1234(Siteid 10)。它必须显示所有三个(UserId:187,196,195)用户详细信息..请尽快回复..
非常感谢