Сущность с LINQ Lambda - не может получить Просмотр в переменной - PullRequest
0 голосов
/ 22 февраля 2020

Я пытаюсь получить данные из представления в модель, используя Entity LINQ / Lambda. Однако я не могу отладить полученную ошибку или причину ее возникновения.

У меня есть следующие классы:

public class Item
{
 public int Id {get;set;}
 public string Name {get;set;}
 public List<Review> Reviews {get;set;}
}

public class Review
{
 public int Id {get;set;}
 public int ItemId {get;set;}
 public string Comment {get;set;}
}

И я создал представление, чтобы получить все элементы и их соответствующие обзоры:

Create View ItemReviewView AS 
SELECT 
i.Id AS [ItemId],
i.Name AS [ItemName],
r.Id AS [Id],
r.ItemId AS [TiedItemId],
r.Comment AS [Comment]
FROM Items i
LEFT JOIN Reviews r ON r.ItemId = i.Id

Модель сущности, которую я имею для это представление выглядит следующим образом:

public class ItemReviewView
{
  [Key]
  public int ItemId { get; set; }
  public string Name {get;set;}
  public List<Review> reviews {get;set;}
}

...

//Within DatabaseContext class
public DbSet<ItemReviewView> ItemReviewView { get; set; }

Однако при попытке получить данные из представления с помощью:

List<Item> items = new List<Item>();

items = _ctx.ItemReviewView.Select(i => new ItemReviewView
{
  Id = i.ItemId,
  Name = i.Name
  Reviews = i.reviews
  .Where(r => r.TiedItemId == i.ItemId)
  .Select(r => new Review
  {
    Comment = r.Comment
  }).ToList()
}).ToList();

я получаю сообщение об ошибке:

Неверное имя столбца 'ItemReviewView_ItemId'

Почему я получаю эту ошибку?

1 Ответ

0 голосов
/ 22 февраля 2020

Пожалуйста, определите ItemId как внешний ключ для объекта проверки.

...