私はおそらくばかで、これに対する答えを探して過去 2 時間探し回っていました。
基本的に、私は最初にコードを作成するのが初めてで、このプロジェクトでそれを使用しており、クエリの方法がわかりません。
私は3つのクラスを持っています
プロフィール > チーム > イベント
特定のユーザーがアクセスできるイベントのリストを取得する必要があります。ユーザーは、そのイベントを所有するチームのメンバーである必要があります。
ユーザー (プロファイル) は多くのチームのメンバーになることができ、すべてのチームからのイベントのリストが必要です。
クラスのほとんどは現在求めているものとは無関係であるため、クラスを切り詰めました
private void BindEvents()
{
var db = new Context();
var events = db.Profiles
.Include("Teams")
.Include("Teams.Events")
.Where(p => p.User_ID == user)
.FirstOrDefault().Teams.Select(t => new { t.Events }.Events);
gvUpcomingEvents.DataSource = events;
gvUpcomingEvents.DataBind();
db.Dispose();
}
public class Profile
{
[Key]
public Guid User_ID { get; set; }
[Required, MaxLength(10)]
public string Title { get; set; }
[Required, MaxLength(50)]
public string Forename { get; set; }
[Required, MaxLength(50)]
public string Surname { get; set; }
public ICollection<Team> Teams { get; set; }
public Profile()
{
Teams = new HashSet<Team>();
}
}
public class Team
{
[Key]
public int ID { get; set; }
[Required, MaxLength(150)]
public string Name { get; set; }
[Required]
public bool Active { get; set; }
//Foreign Keys
public ICollection<Profile> Users { get; set; }
public ICollection<Event> Events { get; set; }
public Team()
{
Users = new HashSet<Profile>();
}
}
public class Event
{
[Key]
[Required]
public int ID { get; set; }
[Required]
public Guid GUID { get; set; }
}