实体模型上的自定义吸气剂?
Posted
技术标签:
【中文标题】实体模型上的自定义吸气剂?【英文标题】:Custom getter on entity model? 【发布时间】:2021-08-31 15:23:34 【问题描述】:我有一个具有 Date 属性的实体,并且想要创建一个布尔属性来检查该 Date 是否在未来。
public DateTime Date get; set;
public virtual bool IsUpcoming
get
return Date >= DateTime.Now;
但是当我尝试对其运行 Get 时,它会抛出此错误:
LINQ 表达式 'DbSet() .Where(s => s.IsUpcoming)' 无法翻译。附加信息:实体类型“Show”上的成员“IsUpcoming”的翻译失败。这通常发生在指定成员未映射时。以可翻译的形式重写查询,或通过插入对“AsEnumerable”、“AsAsyncEnumerable”、“ToList”或“ToListAsync”的调用显式切换到客户端评估。更多信息请见https://go.microsoft.com/fwlink/?linkid=2101038
关于为什么/如何工作的任何提示?
【问题讨论】:
【参考方案1】:你必须添加 [NotMapped] 属性
[NotMapped]
public virtual bool IsUpcoming
get
return Date >= DateTime.Now;
如果你使用fluent api,则忽略
modelBuilder.Entity<Show>().Ignore(c => c.IsUpComing);
但是在您将数据库设置到您的应用程序之后(通常在 ToList() 之后),您将能够使用它。如果您尝试在 Linq 查询中使用它从 DB 获取数据,您将得到您已经得到的异常。
【讨论】:
以上是关于实体模型上的自定义吸气剂?的主要内容,如果未能解决你的问题,请参考以下文章
没有为“UserCredential”类型定义吸气剂“uid”[重复]
Flutter - 错误:没有为“对象”类型定义吸气剂“文档”