у меня есть две таблицы под названием «События» и «EventUser»,
public partial class Event
{
public Event()
{
this.EventUsers = new HashSet<EventUser>();
this.Objects = new HashSet<Object>();
}
public int Id { get; set; }
public Nullable<int> CreatedBy { get; set; }
public Nullable<System.DateTime> StartTime { get; set; }
public Nullable<bool> IsShared { get; set; }
public Nullable<double> Budget { get; set; }
public virtual User User { get; set; }
public virtual ICollection<EventUser> EventUsers { get; set; }
public virtual ICollection<Object> Objects { get; set; }
}
и
public partial class EventUser
{
public Nullable<int> EventId { get; set; }
public Nullable<int> UserId { get; set; }
public bool IsAccepted { get; set; }
public int EUPK { get; set; }
public virtual Event Event { get; set; }
public virtual User User { get; set; }
}
когда параметр UserId передается методу действия, я планирую отображать все события, которые были приглашены для этого UserId, и всех других пользователей, которые пригласили на каждое из этих событий...
Например, если параметр userId равен 2; я хочу отобразить все EventIds userId 2 и для каждого EventId все UserId и другие детали..
Я попробовал это, и у меня есть некоторая информация о событиях, но нет списка пользователей, которые также пригласили на каждое событие.
вот мой метод действий;
public ActionResult Index(int UId)
{
ViewBag.NotCount = 1;
var result1 = from eu in db.EventUsers where eu.UserId == UId select eu;
var result2 = from eu1 in result1
join e in db.Events on eu1.EventId equals e.Id
select new MessageViewModel {
EventID1 = e.Id,
IsAccepted= eu1.IsAccepted,
CreatedBy = e.CreatedBy,
Budget = e.Budget,
};
return View(result2);
}
и моя точка зрения такова;
@{var counter = 1;}
@if (!Model.Any())
{
<div style="margin-left:550px;margin-top:200px">
<h2>"There are no notifications for you"</h2>
</div>
}
else {
foreach (var item in Model)
{
<div class="panel panel-info" style="width:700px;margin-left:400px">
<a href="#" class="close" data-dismiss="alert">×</a>
<div class=" panel-heading">
<h3 class="panel-title">Notification @counter</h3>
</div>
<div class="panel-body"><p>Event @item.EventID1 is created by @item.CreatedBy .Budget of the event is @item.Budget <p>
@if (item.IsAccepted)
{
<p>You have accept the invitation!!!</p>
}
@if (!item.IsAccepted)
{
<p>You haven't accept the invitation yet!!!!</p>
}
@{counter++;}
</div>
</div>
}
и моя модель просмотра;
public class MessageViewModel
{
public int EventID1 { get; set; }
public bool IsAccepted { get; set; }
public int? CreatedBy { get; set; }
public DateTime StartTime { get; set; }
public bool IsShared { get; set; }
public int ObjectID { get; set; }
public double? Budget { get; set; }
public IEnumerable<EventUser> Euser { get; set; }
// don't know if this is the
// right way to get list of userids
}
как я могу преодолеть эту проблему? Есть ли какие-либо другие подходы, кроме этого, если мой подход неверен??