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を記述せずに目的を達成するには、EntityFrameworkなどの何らかのORMを使用する必要があります。

SQLを生成するLINQを作成する必要があります。また、EFは2つのテーブル間の関係を認識しているため、customerテーブルの「name」プロパティにアクセスできます。

于 2012-12-12T22:27:29.523 に答える
0

MS SQL を使用しているため、Linq to 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

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 };
于 2012-12-13T00:54:42.367 に答える