Я работаю с схемой DB, где записи не перезаписываются при обновлении. Скорее новая копия записи добавляется и помечена как «текущая».Entity Framework - Нежелательная загрузка фильтра?
Например:
Id | Current | Name | Owner
1 | false | Foo | Bar
1 | false | Foo | Bazz
1 | true | Foo | Buzz
В моей модели у меня есть Blog
юридического лица, которое имеет много Post
сек, связанных с ним. Каждый Post
имеет много Comment
сек, связанные с ним:
public class Blog
{
public int Id {get; set};
public bool Current {get; set};
public ICollection<Post> Posts {get; set;}
}
public class Post
{
public int Id {get; set};
public bool Current {get; set};
public ICollection<Comment> Comments {get; set;}
}
public class Comment
{
public int Id {get; set};
public bool Current {get; set};
}
Я хотел бы охотно загрузить Blog
со всеми его Post
с и все их Comment
ей так же, как в this example from MSDN:
using (var context = new BloggingContext()) { // Load all blogs, all related posts, and all related comments var blogs1 = context.Blogs .Include(b => b.Posts.Select(p => p.Comments)) .ToList(); }
Однако я хотел бы включить только записи БД, где Current == true
. Как это сделать с LINQ-to-EF? В идеальном случае условие входило бы в статью JOIN
ON
- это возможно?
Вопрос не очень ясен, а как насчет .Include (b => b.Posts.Select (p => p.Comments.Where (comment => comment.Current))) ?? –
@ a-t Спасибо. То, что не ясно? Ваше предложение не распространяется на блоги и сообщения и дает мне: «В выражении« Включить путь »должно быть указано свойство навигации, определенное в типе. Используйте точечные пути для ссылочных свойств навигации и оператор« Выбор »для свойств навигации для коллекции». – urig