实体模型上的自定义吸气剂?

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 获取数据,您将得到您已经得到的异常。

【讨论】:

以上是关于实体模型上的自定义吸气剂?的主要内容,如果未能解决你的问题,请参考以下文章

没有为“FirebaseUser”类定义吸气剂“实例”

没有为“Firestore”类型定义吸气剂“实例”

没有为“UserCredential”类型定义吸气剂“uid”[重复]

Flutter - 错误:没有为“对象”类型定义吸气剂“文档”

Flutter:没有为“RetryOptions”类定义吸气剂“Pestawait”

没有为类型“Future<List<Item>>”定义吸气剂“长度”