0

以下のデータ モデルを考えると、IsActive =true である Schedule を持つすべての ConfigurableItem を選択したいと思います。

ここに画像の説明を入力

私は re: 連想テーブルに関する多数の例を見てきましたが、例が魔法のように多対多の関連付けを無視しているため、実際にはそれらのいずれも取得していません。私ができるべきだという提案がたくさんあるようです:

var f = from citem in context.ConfigurableItems
        where citem.ConfigurableItemSchedules.Schedule.IsActive == true
        select citem;

しかし、それはインテリセンス/コンパイルではありません。ここで何が欠けていますか?

アップデート:

サーバーエクスプローラー(SQLサーバー)からのドラッグアンドドロップから自動生成された.dbmlを使用しているため、以下は、コメントのいくつかに答えるのに役立つ可能性のある自動生成されたコードです。それらは、生成されたフィールドの切り捨てられたスニペットです。

public partial class ConfigurableItem : INotifyPropertyChanging, INotifyPropertyChanged
    {

        private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);

        private long _ConfigurableItemIndexCode;

        private string _ItemRootPath;

        private string _ItemName;

        private string _HandlerAssembly;

        private string _HandlerType;

        private EntitySet<ConfigurableItemProperty> _ConfigurableItemProperties;

        private EntitySet<ConfigurableItemSchedule> _ConfigurableItemSchedules;

....

public partial class ConfigurableItemSchedule : INotifyPropertyChanging, INotifyPropertyChanged
{

    private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);

    private long _ConfigurableItemIndexCode;

    private long _ScheduleIndexCode;

    private EntityRef<ConfigurableItem> _ConfigurableItem;

    private EntityRef<Schedule> _Schedule; 
4

2 に答える 2

2

私はあなたが必要だと思います:

var f = from citem in context.ConfigurableItems
        where citem.ConfigurableItemSchedules.Any(s=>s.Schedule.IsActive)
        select citem;

またはそのようなもの。

于 2013-02-26T08:30:45.677 に答える
1

Schedule に到達しようとしていますが、ConfigurableItemSchedules 自体に多くの行があるため (おそらく、と思います)、コンパイラは、どの行のスケジュールが必要かを理解できません。行のコレクションを選択することをコンパイラに表示するために.SelectMany(t=>...)またはを使用する必要があります。.any()

var c = (from u in  context.Schedule
                     where u.IsActive == true
                     select u.ConfigurableItemSchedules.ConfigurableItems);
于 2013-02-26T08:31:42.183 に答える