Entity Frameworkの(EF)を使用する場合は、あなたの最善の解決策は、LINQ(http://msdn.microsoft.com/en-us/library/bb308959.aspx)を使用して、EFコンテキストを照会することです。 LINQは関係全体に照会するために使用することができますので、あなたのシナリオでは、あなたのコードは次のようになります。
var joinedlist = context.Student.Join(
// The table we wish to join to the Student table
context.Department,
// Item on student table we want to join from
studentItem => studentItem.DeptId,
// Item on department table we want to join to
departmentItem => departmentItem.Deptd,
// New object just holding the values we wish to retrieve from the joined tables
(studentItem, departmentItem) => new {
StudentId = studentItem.StudentId,
StudentUsername = studentItem.Username,
StudentAddress = studentItem.Address,
DepartmentName = departmentItem.DeptName,
Navigation = StudentItem.NavigationProp1Id
}
);
上記のコードは、あなたのための照会可能なリストを生成しますが、あなたは、LINQでより多くのことを行うことができます。例えば、データのサブセットを選択して検索結果をフィルタリング:パフォーマンスについて
var singleItem = joinedlist
// Filter our joined list
.Where(item => item.StudentId.Equals(1))
// Select only a subset of columns
.Select(item => new {item.StudentUsername, item.StudentAddress})
// Return only a single item
.FirstOrDefault();
- 私はあなたのEFであなたのLINQ文のSQL出力を表示することができプロファイラのホールドを得ることを示唆しています。これは、遅延ロードを理解し、誤った.ToList()があなたのDB全体を返す可能性がある場合に、本当に役立ちます!