Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法映射列表_C#_Entity Framework_Enums_.net Core - Fatal编程技术网

C# 无法映射列表

C# 无法映射列表,c#,entity-framework,enums,.net-core,C#,Entity Framework,Enums,.net Core,我在.Net核心项目中有一些模型,我想在其中列出枚举 public class CartOptional { [Required] public Guid Id { get; private set; } public int Price { get; set; } public string CartId { get; set; } public string Type { get; set; }

我在.Net核心项目中有一些模型,我想在其中列出枚举

public class CartOptional
    {
        [Required]
        public Guid Id { get; private set; }
        public int Price { get; set; }
        public string CartId { get; set; }
        public string Type { get; set; }
        public List<FieldValidator> Validators { get; set; }
        public string Label { get; set; }
        public string Value { get; set; }
        public DateTime CreatedAt { get; set; } = DateTime.Now;
        public DateTime UpdatedAt { get; set; } = DateTime.Now;
    }
在父类中,我有公共字段验证器验证器{get;set;}

但是现在我尝试发布一个新元素,当我尝试验证ModelState时,出现了以下错误:

tierList[0]。字段列表[0]。验证程序:[ 分析枚举时出现意外的令牌StartArray。路径“tierList[0]。字段列表[0]。验证程序”,第24行,位置25。 ]

什么是令牌StartArray?

一个枚举值不应该是问题,但由于枚举只是一个整数值,因此不能将其用作实体列表。您应该显式地将枚举设置为实体,或者使用我建议使用的标志枚举

例如,请看一看。

一个枚举值不应该是问题,但由于枚举只是一个整数值,因此不能将其用作实体列表。您应该显式地将枚举设置为实体,或者使用我建议使用的标志枚举

例如,看一看。

问题根本不是枚举。这就是清单。即使您尝试,也会得到相同的错误

public List<int> Validators { get; set; }
并在您的卡通实体中使用此属性:

一种解决方法是将验证器设置为字符串属性,并保存类似逗号分隔的值,或者如果适合您,甚至可以尝试使用字节数组。数据库可以在列中存储字节数组

希望我能帮忙, 快乐的编码

问题根本不是枚举。这就是清单。即使您尝试,也会得到相同的错误

public List<int> Validators { get; set; }
并在您的卡通实体中使用此属性:

一种解决方法是将验证器设置为字符串属性,并保存类似逗号分隔的值,或者如果适合您,甚至可以尝试使用字节数组。数据库可以在列中存储字节数组

希望我能帮忙,
快乐的编码

你为什么要尝试列出?解释?可能重复的请参见为什么使用Serializable属性?错误表明问题出在类型本身。什么是FieldValidator?除非它是映射到另一个表的实体,否则EF不知道如何处理它。它代表表中的5列吗?用作位字段的单个int?还有什么?@Ragnar如果枚举是一个标志,那么属性不应该是列表,它应该是公共FieldValidator Validators{get;set;}。为什么要尝试列表?解释?可能重复的请参见为什么使用Serializable属性?错误表明问题出在类型本身。什么是FieldValidator?除非它是映射到另一个表的实体,否则EF不知道如何处理它。它代表表中的5列吗?用作位字段的单个int?还有什么?@Ragnar如果枚举是一个标志,那么属性不应该是一个列表,它应该是公共FieldValidator验证器{get;set;}。在表中存储位字段本身就是一个问题,因为它们不能被索引或查询。这就是为什么我还建议显式地将枚举作为一个实体,或者使用标志枚举;在表中存储位字段本身就是一个问题,因为它们不能被索引或查询;对于Enum,我使用[Flag]属性,但这是我对其他列表使用的方法。就像我说的,我来自NoSQL Mongo世界。我必须记住这个区别。对于Enum,我使用[Flag]属性,但这是我对其他列表使用的方法。就像我说的,我来自NoSQL Mongo世界。我必须记住这个区别。
public List<string> Validators { get; set; }
public class FieldValidatorEntity
{
    public int Id { get; set; }

    public int CartOptionalId { get; set; }
    public CartOptional CartOptional { get; set; }

    public FieldValidator Value { get; set; }
    // other columns
}
public List<FieldValidatorEntity> Validators { get; set; }