0

嗨,有没有一种简单的方法来获取外键的值,而无需编写 sql 查询。

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

订单表:

id customer_fk
1  100
2  105

客户表:

id   name
100  Walter
105  White

看法:

@model ...order
...
@customer_fk

@customer_fk 提供例如。“100”而不是“沃尔特”

4

3 回答 3

2

不确定您是否需要使用 ADO.NET,但要完成您想要的,无需编写 sql,您需要使用某种 ORM,例如 EntityFramework。

您将需要编写生成 SQL 的 LINQ,并且由于 EF 将了解两个表之间的关系,因此您将可以访问客户表中的“名称”属性。

于 2012-12-12T22:27:29.523 回答
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
于 2012-12-13T00:27:21.817 回答
0

如果您在实体框架(或其他类似的 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 };
于 2012-12-13T00:54:42.367 回答