您可以通过简单的方法获取外键的值,而无需编写SQL查询。
我在mssql数据库(ADO.NET)的帮助下生成了代码。 这是一个澄清的例子
订单表:
id customer_fk
1 100
2 105
客户表:
id name
100 Walter
105 White
视图:
@model ...order
...
@customer_fk
@customer_fk提供例如。 “100”代替“沃尔特”
答案 0 :(得分:2)
不确定您是否需要使用ADO.NET,但要完成您想要的操作而不编写SQL,您需要使用某种ORM,例如EntityFramework。
您将需要编写生成SQL的LINQ,并且由于EF将了解这两个表之间的关系,您将可以访问customer表中的“name”属性。
答案 1 :(得分:0)
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
答案 2 :(得分:0)
如果您在Entity Framework(或其他类似的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 };