Я использую .NET Core 2.0
У меня есть 2 таблицы:
Movies
ID | Name | AuthorId
----------------------
1 | AAAA | 1
2 | BBBB | 1
3 | CCCC | 1
4 | DDDD | 2
Reviews
ID | FilmId | AuthorId | SomeText
------------------------------------
1 | 1 | 1 | this is horror
2 | 1 | 2 | this is comendy
3 | 3 | 1 | it may be horror
4 | 3 | 2 | it is definitely comedy, not horror
Мои модели:
class Movie {
[Key]
public int ID { get; set; }
public string Name { get; set; }
public int AuthorId { get; set; }
public List<Review> Reviews { get; set; }
}
class Review {
[Key]
public int ID { get; set; }
public string SomeText { get; set; }
public int AuthorId { get; set; }
public int FilmId { get; set; }
public Movie Film { get; set; }
}
Мой контекст:
public class MyContext : DbContext
{
public DbSet<Movie> Movie { get; set; }
public DbSet<Review> Review { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Movie>().HasMany(m => m.Reviews).WithOne(r => r.Film);
}
}
Теперь я хочу сделать такой запрос:
SELECT * FROM Movies m ОБЪЕДИНЕНИЕ рецензий r ON (m.ID == r.FilmId) WHEREm.AuthorId = 1 AND (r.AuthorID = 3 ИЛИ r.SomeText LIKE '% определенно%');
Ожидаемый результат должен быть CCCC .
В настоящее время у меня есть:
List<Movie> movies = _context.Movie.Include(m => m.Reviews.Select(r => r.AuthorId == 3 || r.SomeText.Contains("definitely"))).ToList();
Как выразить вышеуказанный запрос с помощью этой записи?
Однако я получаю:
InvalidOperationException: выражение свойства 'm => {из Review r в m.Reviews select (([[r] .AuthorId == __user_ID_0) OrElse [r] .SomeText.Contains ("безусловно"))}' недопустимо.Выражение должно представлять доступ к свойству: 'r => r.MyProperty'.Для получения дополнительной информации о включении связанных данных см. http://go.microsoft.com/fwlink/?LinkID=746393.
Я прочитал эту статью, но она мне ничего не дала.