C# 无法映射列表
我在.Net核心项目中有一些模型,我想在其中列出枚举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; }
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; }