Heey、私たちは教師と学生関係を持っていると仮定します。先生は学生グループを担当します。今度は、先生が責任を負う学生を含め、教師のすべての情報をロードしたいと言うことができます。しかし、そのクラスの学生からは、名前を含む列だけをロードしたいので、年齢とStudentNumber(下記参照)。今私の質問は、私はそれをどうするのだろうか?Entityframeworkエンティティにリストの特定の列をロードする
https://colinmackay.scot/2011/07/31/getting-just-the-columns-you-want-from-entity-framework/この問題を解決するための試みでは、私の状況とほぼ同じですが、リンクに表示されている例では文字列のリストが返されます。
クラス:ローディングの
public class SchoolContext : DbContext
{
public DbSet<Teacher> Teachers { get { return Set<Teacher>(); } }
}
public class Teacher
{
[Key]
public int ID { get; private set; }
public string Name { get; set; }
public List<Students> Students { get; set; }
}
public class Students
{
[Key]
public int DatabaseID { get; private set; }
public int StudentNumber { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
例:
private static void Main(string[] args)
{
var Teacher = LoadTeacher(4);
foreach(var student in Teacher.Students)
{
Console.WriteLine(student.Name);
}
}
public static Teacher LoadTeacher(int teacherID)
{
using (var context = new SchoolContext())
{
return context.Teachers.Where(t => t.ID == teacherID)
.FirstOrDefault();
//At this part is my question, how would i make sure that only the name of those students are loaded and not the Age and the StudentNumber?
}
}
匿名のクラスタイプを返すことはお勧めできません。その答えは、明示的に定義された転送タイプの定義によって、より良いでしょう。 – grek40
私の意見では、あなたが結果をどうしたいかによって異なります。 Webアプリケーションのテーブルにこれを表示したいのであれば、Jsonオブジェクトに入れるのが一般的であるため、結果の定義クラスは必要ないので、プロジェクトは大きくなりません各クエリで –
これは今まで最高の解決策であるようです。 – Sulicio