C# 列表<;Enum>;在聚合中EntityFramework CodeFirst

C# 列表<;Enum>;在聚合中EntityFramework CodeFirst,c#,entity-framework,enums,C#,Entity Framework,Enums,我最初在聚合中使用Enum,这对我来说很好,但现在当我将属性更改为List时,我发现数据库中没有保存或检索值,我认为CodeFirst会为列表创建一个单独的表,并在那里映射行,但事实并非如此,既不存储也不检索这些值 Agg: 我的理解是,当枚举是对象的标准属性时,它们存储为整数。但我不确定当您将枚举集合用作属性时会发生什么;那感觉不可能 此链接应提供有关实体框架()中枚举支持的更多信息 顺便说一句,如果您首先使用DbSet和代码,则不需要从实体派生,我建议使用 public virtual IC

我最初在聚合中使用Enum,这对我来说很好,但现在当我将属性更改为List时,我发现数据库中没有保存或检索值,我认为CodeFirst会为列表创建一个单独的表,并在那里映射行,但事实并非如此,既不存储也不检索这些值

Agg:


我的理解是,当枚举是对象的标准属性时,它们存储为整数。但我不确定当您将枚举集合用作属性时会发生什么;那感觉不可能

此链接应提供有关实体框架()中枚举支持的更多信息

顺便说一句,如果您首先使用DbSet和代码,则不需要从实体派生,我建议使用

public virtual ICollection<CourseTypes> CourseOpted {get; set;}
公共虚拟ICollection CourseOpted{get;set;}

用于集合属性的签名。

使用标志枚举。你不需要额外的桌子。它要快得多

在您的模型中,您可以

var person = new Trainee();
p.CoursesOpted.Add(CoursesTypes.PHP);
p.CoursesOpted.Add(CoursesTypes.PHP);
。。。这是错误的。有了旗子,你会这样做的

p.CoursesOpted = CoursesTypes.PHP | CoursesTypes.Networking;

有一个相同的问题和答案:
var person = new Trainee();
p.CoursesOpted.Add(CoursesTypes.PHP);
p.CoursesOpted.Add(CoursesTypes.PHP);
p.CoursesOpted = CoursesTypes.PHP | CoursesTypes.Networking;