Asp.无法创建类型的常数值.在此上下文中只支持基本类型或枚举类型

本文关键字:类型 支持 上下文 枚举 创建 常数值 Asp | 更新日期: 2023-09-27 18:02:44

这里有一堆这样的问题,但大多数都涉及一个独特的问题,我还没有发现一个适用于我的代码。

当我尝试用ToList()转换到列表时发生错误。

当我查看断点时,

fields不包含数据,因此它可能是select命令。

==.Equals()得到相同的结果。

控制器代码:

        var fields = from f in db2.Fields
                      where f.UpFile.Equals(upFile)
                      select f;
        ViewBag.Fields = fields.ToList();

模型代码:

namespace steer.Models
{
    public class UpFile
    {
        [Key]
        [Display(Name="Auðkenni")]
        public int ID { get; set; }
        [Required]
        [Display(Name="Nafn")]
        public string Name { get; set; }
        [Required]
        [Display(Name = "Hlaðið þann")]
        public DateTime Date { get; set; }
        [Required]
        [Display(Name="Tegund")]
        public string FileType { get; set; }
        [Required]
        [Display(Name = "Stærð (kB)")]
        public int Size { get; set; }
        public string Columns { get; set; }
        public virtual ICollection<Field> Fields { get; set; }
        public class UpFileDBContext : DbContext
        {
            public DbSet<UpFile> UpFiles { get; set; }
        }
    }
    public class Field
    {
        public int ID { get; set; }
        public string values { get; set; }
        [ForeignKey("UpFile")]
        public int UpFileID { get; set; }
        public virtual UpFile UpFile { get; set; }
        public class FieldDBContext : DbContext
        {
            public DbSet<Field> Fields { get; set; }
        }
    }
}

Asp.无法创建类型的常数值.在此上下文中只支持基本类型或枚举类型

我怀疑问题是您在查询中使用复杂类型进行比较f.UpFile.Equals(upFile)

你为什么不尝试比较一个基本类型,比如upFile id ?

I would try:

 var fields = from f in db2.Fields
                      where f.UpFile.ID == upFile.ID
                      select f;
 ViewBag.Fields = fields.ToList();