具有LINQ Lambda的实体-无法将View捕获到变量中

问题描述 投票:0回答:1

我正在尝试使用实体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']​​>

为什么会出现此错误?

我正在尝试使用实体LINQ / Lambda将视图中的数据捕获到模型中。但是,我无法调试出现的错误或发生错误的原因。我有以下课程:公共课程...

c# entity-framework linq linq-to-sql
1个回答
0
投票

请定义ItemId为Review实体的外键。

© www.soinside.com 2019 - 2024. All rights reserved.