public class Book
{
public string Name { get; set; }
public string Description { get; set; }
public double Price { get; set; }
public int Stock { get; set; }
public DateTime DateAdded { get; set; }
public int AuthorId { get; set; }
public Author Author { get; set; }
public int CategoryId { get; set; }
public Category Category { get; set; }
}
Запрос к базе данных при активной загрузке возвращает модель, равную нулю, если один из включенных в нее вложенных классов равен нулю.У меня есть сущность книги, у которой есть два подчиненных класса - Автор и Категория .Я хочу идентифицировать вложенную сущность, которая является нулевой, и исключить ее из запроса.Если оба они равны нулю, исключите их обоих и верните только Book с указанным идентификатором.Я выписал следующие лямбда-запросы, но они выглядят немного грубыми, слишком много раз попадают в базу данных и должны быть упрощены.Есть ли лучший способ сделать эту логику более элегантной и упрощенной?
public ActionResult ProductView (int? id)
{
if (id != null)
{
var book = db.Books.Where(b => b.Id == id).Include(b => b.Author).Include(b=> b.Category.Books).SingleOrDefault();
if(book==null)
{
var bookWithCtg = db.Books.Where(b => b.Id == id).Include(b => b.Category).SingleOrDefault();
var bookWithAuth = db.Books.Where(b => b.Id == id).Include(b => b.Author).SingleOrDefault();
if (bookWithCtg == null&& bookWithAuth ==null)
book = db.Books.Where(b => b.Id == id).SingleOrDefault();
else if(bookWithAuth==null)
book = db.Books.Where(b => b.Id == id).Include(b => b.Category.Books).SingleOrDefault();
else if (bookWithCtg == null)
book = db.Books.Where(b => b.Id == id).Include(b => b.Author).SingleOrDefault();
}
book.DisplayNumber++;
db.SaveChanges();
return View(book);
}
else
return HttpNotFound();
}