嗨,有没有一种简单的方法来获取外键的值,而无需编写 sql 查询。
我在我的 mssql 数据库 (ADO.NET) 的帮助下生成了代码。这是一个澄清的例子
订单表:
id customer_fk
1 100
2 105
客户表:
id name
100 Walter
105 White
看法:
@model ...order
...
@customer_fk
@customer_fk 提供例如。“100”而不是“沃尔特”
嗨,有没有一种简单的方法来获取外键的值,而无需编写 sql 查询。
我在我的 mssql 数据库 (ADO.NET) 的帮助下生成了代码。这是一个澄清的例子
订单表:
id customer_fk
1 100
2 105
客户表:
id name
100 Walter
105 White
看法:
@model ...order
...
@customer_fk
@customer_fk 提供例如。“100”而不是“沃尔特”
不确定您是否需要使用 ADO.NET,但要完成您想要的,无需编写 sql,您需要使用某种 ORM,例如 EntityFramework。
您将需要编写生成 SQL 的 LINQ,并且由于 EF 将了解两个表之间的关系,因此您将可以访问客户表中的“名称”属性。
Linq to SQL 可能是一个不错的选择,因为您使用的是 MS SQL。只需将 DataContext 项添加到您的项目中,然后从您的服务器拖放表。然后你应该能够写出类似的东西:
public ActionResult Order(int orderId)
{
using (MyDataContext context = new MyDataContext())
{
var loadOptions = new LoadOptions();
loadOptions.LoadWith<order>(o => o.customer);
context.LoadOptions = loadOptions;
var theOrder = context.orders.Where(order => order.id == orderId).FirstOrDefault();
return View(theOrder);
}
}
但如果您已经在使用 ADO.Net,也许只需编写查询?这并不难:
SELECT order.*, customer.name
FROM order INNER JOIN customer ON order.customer_fd = customer.id
如果您在实体框架(或其他类似的 ORM)中执行此操作,则可以编写一个连接到外键表的 LINQ 查询:
var customerOrders =
from o in context.Orders
join c in context.Customers on o.customer_fk equals c.ID
select new { OrderID = o.ID, CustomerName = c.Name };