2

Entity Frameworkを使用してアプリを作成しています。データベースからデータベースモデルをロードしました。CourseテーブルにDepartmentは、外部キーがあります。グリッドビューを作成し、そのデータソースをコーステーブルに設定しましたが、代わりに表示したいです。 .Navigationプロパティを次のように使用できますが、navigationプロパティを使用してDepartment Tableからデータ(Department name)を取得するにはどうすればよいですか。これで私を助けることができる人は誰でもこれは私のコードですNavigation PropertyDepartmentIDDeaptment Namedepartment IDDepartment.count

       var result = (from o in ctx.Courses.Include("Department")
                     where o.Title == TextBox2.Text
                      select o
                      ).First();

        //GridView4.DataSourceID="";
        GridView3.DataSource=result;

        GridView3.DataBind();

First関数を使用しないと、部門名属性にアクセスできません。First()を使用すると、次のようになります。

Data source is an invalid type.  It must be either an IListSource, IEnumerable, or IDataSource.

どうすれば解決できるか教えてください。

4

2 に答える 2

0
var result = (from c in dbContext.Course
             select c).First();
if(!result.Department.IsLoaded)
   {
      result.Department.Load(); //this will load the course.Department navigation property

   }

//Assuming you have 1 - 1 relationship with course to department
string departmentName = result.Department.Name;

または、部門と 1 - M の関係がある場合:

foreach(Department d in result.Department)
{
Console.WriteLine(d.Name);
}

編集:
部門をロードしようとする代わりに、次のことを行います

if(!result.DepartmentReference.IsLoaded)
{
result.DepartmentReference.Load()
}

方法: 関連オブジェクトを明示的に読み込む

于 2012-05-16T14:31:56.533 に答える
0

Northwind の Products テーブルと Categories テーブルは、必要なものと似ていると思います。次のようなクエリを書きます。

        var ctx = new NorthwindEntities();
        var query = from prod in ctx.Products
                    where prod.ProductName.StartsWith("C")
                    select new { prod.ProductName, prod.UnitPrice, prod.Category.CategoryName };
于 2012-05-16T17:59:29.867 に答える