如何处理Asp中的多对多数据库.Net Web API
本文关键字:多数据 数据库 Net API Web 何处理 处理 Asp | 更新日期: 2023-09-27 18:17:10
我正在做一个ASP。Net Web API和我已经把我的头撞到墙上了,但到目前为止,我还没有幸运的多对多关系。我正在做一个MVC项目
我有3个表类,如下所示:
[Table("Emails")]
public class Email
{
public int Id { get; set; }
public string EmailAddress { get; set; }
}
[Table("Reports")]
public class Report
{
public int Id { get; set; }
public string Name { get; set; }
}
[Table("ReportsAndEmails")]
public class ReportAndEmail
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Id { get; set; }
public int EmailID { get; set; }
public int ReportID { get; set; }
}
在ReporsAndEmails表上,我有两个外键,Email表中的Id是EmailID的外键,Report中的Id是ReportID的外键。一切都如我所料。我想要显示ReportAndEmail表中的所有记录给用户,但不是显示EmailID,而是匹配Email表中的id并显示EmailAddress reporttid也是这样。我想将reporttid与报表表的ID匹配,并显示Name。
我知道我可以通过加载所有表和匹配数据来破解代码以在客户端部分显示这一点,但我知道这种方法太愚蠢了。但我正在做一个API web项目,所以我想在服务器端而不是客户端处理。我的问题是,处理这个问题的最好方法是什么?我到底该怎么做?
我想你是在找Linq join。
http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b(在页面上搜索"join")有以下示例,但您需要以类似的方式连接3个表。
public void Linq102()
{
string[] categories = new string[]{
"Beverages",
"Condiments",
"Vegetables",
"Dairy Products",
"Seafood" };
List<Product> products = GetProductList();
var q =
from c in categories
join p in products on c equals p.Category
select new { Category = c, p.ProductName };
foreach (var v in q)
{
Console.WriteLine(v.ProductName + ": " + v.Category);
}
}