获取外键的值

时间:2012-12-12 21:49:52

标签: asp.net asp.net-mvc razor ado.net

您可以通过简单的方法获取外键的值,而无需编写SQL查询。

我在mssql数据库(ADO.NET)的帮助下生成了代码。 这是一个澄清的例子

订单表:

id customer_fk
1  100
2  105

客户表:

id   name
100  Walter
105  White

视图:

@model ...order
...
@customer_fk

@customer_fk提供例如。 “100”代替“沃尔特”

3 个答案:

答案 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 };