c# - 实体框架核心:未处理的异常
问题描述
我正在尝试在我的应用程序中查询以下实体:
public class Reservation
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ReservationId { get; set; }
public int PersonId { get; set; }
[ForeignKey("PersonId")]
public Person Person { get; set; }
[ForeignKey("FilmShowId")]
public FilmShow FilmShow { get; set; }
public int FilmShowId { get; set; }
}
public class Person
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int PersonId { get; set; }
[Required]
[MaxLength(255)]
public string FirstName { get; set; }
[Required]
[MaxLength(255)]
public string LastName { get; set; }
public string Email { get; set; }
public ICollection<Reservation> Reservations =
new List<Reservation>();
}
我正在使用这个查询:
public async Task<IEnumerable<Person>> GetPersonsAndReservations()
{
return await _context.Persons.Include(p => p.Reservations).ToListAsync();
}
我不断收到以下异常:
ArgumentException:包含属性 lambda 表达式“p => p.Reservations”无效。该表达式应表示属性访问:'t => t.MyProperty'。要定位在派生类型上声明的导航,请指定目标类型的显式类型化 lambda 参数,例如 '(Derived d) => d.MyProperty'。
我在这里做错了什么吗?
解决方案
这Person.Reservations
是一个字段,而 EF Core(尽管可以使用支持字段进行物化)按照约定仅映射属性:
按照惯例,具有 getter 和 setter 的公共属性将包含在模型中。
简单地改变
public ICollection<Reservation> Reservations =
new List<Reservation>();
到
public ICollection<Reservation> Reservations { get; set; } =
new List<Reservation>();
问题应该得到解决。
推荐阅读
- c# - 读取远程访问文件时模拟未知错误
- magento2 - 未定义的索引:magento 2 中的 core_website
- angular - CORS 以某种方式阻止我的 Angular 和 Nestjs 应用程序进行通信
- smartsheet-api - 如何生成智能表访问令牌,仅允许访问单个工作表
- javascript - 如何在创建快速路线时修复文本颜色错误
- python - Python+mySQL:如何通过Pymysql插入数据
- php - PHP REST API 更新 json_encode 返回 null
- python-3.x - 应用高级逻辑来生成新的 pandas 数据框
- audio - 静音删除过滤后出现ffmpeg严重噪音
- flutter - 为什么我的 Future Builder 没有收到连接?