2

ニュース エンティティがあり、NewsID に基づいてニュースを取得します。ここで、新しいエンティティであるグループを定義し、グループ ID に基づいてニュースを取得したいと考えています。これを一緒にテーブルに関連付けるために、グループ ニュース テーブル Aslo を定義しました。 ここに画像の説明を入力

私が持っているニュースモデルで:

public virtual ICollection<GroupNews> RelatedGroupID { get; set; }

したがって、GroupNews テーブルの値を定義し、それを NewsService で使用できると仮定しました。

次に NewsService を見てみましょう:

    Expression<Func<News, bool>> constraint = null;

    if (user_id > 0 && project_id > 0)
    {
        constraint = e => (e.CreatorID == user_id && e.RelatedProjectTags.Any(p => p.ProjectID == project_id));
    }
    else if (user_id > 0)
    {
        constraint = e => (e.CreatorID == user_id);
    }
    else if (project_id > 0)
    {
        constraint = e => (e.RelatedProjectTags.Any(p => p.ProjectID == project_id));
    }

    else
    {
        constraint = null;
    }

    IEnumerable<News> result_list = null;

    if (constraint != null)
    {
        result_list = newsRepository.GetMany(constraint).OrderByDescending(e => e.CreatedOn).Skip(offset);
    }
    else
    {
        result_list = newsRepository.GetAll().OrderByDescending(e => e.CreatedOn).Skip(offset);
    }

    if (count > 0)
    {
        result_list = result_list.Take(count);
    }

    return result_list.ToList<News>();
}

}

GroupID に基づいて制約を定義するために、この行を追加します。

    else if (groupId > 0)
    {
        constraint = e => (e.RelatedGroupID.Any(n => n.GroupID == groupId));
    }

それは間違っているようで、私にこのエラーを与えます:

{"無効なオブジェクト名 'dbo.GroupNewsNews'."}

4

1 に答える 1

5

1.GroupNews テーブルに GroupNewsID は必要ありません。この列を削除して、GroupID と NewsID による複合キーを作成する必要があります。News エンティティでは、プロパティを定義する必要があります。

    public virtual ICollection<Group> Groups 
    { 
        get; 
        set; 
    }

このエンティティのデフォルト コンストラクターでは、プロパティを初期化する必要があります (遅延読み込みが必要です)。

Groups = new List<Group>();

グループ エンティティの同様の変更。

2. GroupMap.cs で定義する必要があります

this.HasMany(t => t.News)
    .WithMany(t => t.Groups)
    .Map(m =>
        {
            m.ToTable("GroupNews");
            m.MapLeftKey("GroupID");
            m.MapRightKey("NewsID");
        });

3. NewsRepository と GroupRepository のテストを作成します。

于 2013-05-03T13:20:10.187 に答える