Я в растерянности относительно того, как озаглавить это, так что, если кто-то сможет переименовать это более правильно, это будет оценено.
Я застрял в том, как я могу заполнить пользовательские свойствакласса частичных сущностей.Некоторые примеры
// partial class from EF base class - base class contains
// properties such as commentID, comment, userID etc
// Comments.cs
public partial class Comment {
public int UpVotes { get; set; }
public int DownVotes { get; set; }
public int CurrentVotes()
{
return UpVotes - DownVotes;
}
}
_
//CommentRepository.cs
//snip
public Comment GetItem(int id)
{
Comment c = db.Comments.SingleOrDefault(x => x.CommentID == id);
c.UpVotes = 0 //get UpVotes
c.DownVotes = 0 // get DownVotes
return c;
}
public IQueryable<Comment> GetAllCommentsByPage(int pageid)
{
}
public IQueryable<Comment> GetAllCommentsByPage(string slug)
{
}
public IQueryable<Comment> GetCommentSelection(int PageID, int Skip, int Take)
{
}
public int CountCommentByPage(int PageID)
{
}
В старые дни .Net 1.x я бы использовал методы GetAllx, чтобы выбрать список CommentID, а затем заполнить новый список с помощьюиспользуя List.Add (GetItem (ID)).
В EF4 я хочу сделать подобное, но не потерять в отложенном выполнении IQueryables.
В нескольких случаях я нашел это полезнымбыстро сложить эти методы GetAllx перед окончательным .ToList () или аналогичным, чтобы получить фактические данные.
Есть ли для меня разумный способ сделать то, что, я надеюсь, довольно просто и ускользает от меня?Я бы не хотел менять каждый метод, чтобы он возвращал статический список элементов, которые могут быть сгенерированы одним методом GetItem.
Заранее спасибо.
----- edit -----
Хорошо, вот решение, которое у меня есть на данный момент:
public List<Comment> IQueryable2ToList(IQueryable<Comment> c)
{
List<Comment> comments = new List<Comment>();
List<int> ids = c.Select(x => x.CommentID).ToList();
foreach (int id in ids) {
comments.Add(GetComment(id));
}
return comments;
}
Который я вызываю, делая:
List<Comment> comments = (new CommentRepository()).IQueryable2ToList(db.FindAllCommentsByPage(slug));
Который как-то кажется немного грязным...