追加情報を取得するためにエンティティモデルにクエリを実行する際に問題があります。エンティティフレームワークIQueryable
My dbには、イベントテーブルと1対多のリレーションを持つプログラムテーブルがあります。エンティティモデルは関係をうまく生成しますが、モデルにクエリを実行してイベントでprogamオブジェクトを取得する方法がわかりません。
私はこれを行うことができますが
var foo = from program in entities.ProgramSet
where program.StartDate > DateTime.now
orderby program.StartDate
select program;
問題はありませんが。 Microsoftのページ(Entityフレームワークによるクエリのシェーピング)で見つかったもの:msdn.microsoft.com/en-us/library/bb896272.aspx、子オブジェクトを取得する場合は、次のようにします。
// Define a LINQ query with a path that returns
// orders and items for a contact.
var contacts = (from contact in context.Contact
.Include("SalesOrderHeader.SalesOrderDetail")
select contact).FirstOrDefault();
ただし、クエリで見つけることができるインクルードまたはインクルードはありません。
提案がありますか?私は結果を渡ってforeachを実行してから、.Events.Load()を実行することができますが、SQLを実行するためにIQueriable結果を強制しません。 )などが呼ばれていますか?私はそれはまた、イベントデータを含める持ちたいFindUpComingProgramsで
public class ProgramRepository : CT.Models.IProgramRepository
{
CTEntities db = new CTEntities();
public IQueryable<Program> FindAllPrograms()
{
return db.ProgramSet;
}
public IQueryable<Program> FindUpcomingPrograms()
{
var programs = from program in FindAllPrograms()
where program.StartDate > DateTime.Now
orderby program.StartDate
select program;
return programs;
}
:ここ
は私のプロジェクトからいくつかのサンプルコードです。プログラムとイベントモデルの間には関係があります。プログラムにリスト<
イベント
>
があります。これは、IQueryableメソッドを使用して返したいものです。
もう一度おねがいします!
はEFで動作しませんでしたが、FirstOrDefault()を呼び出しても問合せは実行されます。 – CSharpAtl
はい、それは、MicrosoftのWebサイトからのFirstOrDefault()のサンプルを回避したいと思います。 – Mike