我最初在聚合中使用Enum,碰巧对我来说工作正常,但现在当我将属性更改为List时,我发现数据库中没有保存或检索这些值,我认为CodeFirst会为List创建一个单独的表并在那里映射行,但事实并非如此,这些值既不存储也不存储。
此Agg:
public class Trainee: Entity
{
public int TraineeId { get; set; }
public string Name { get; set; }
public int Age { get; set;}
public virtual List<CoursesTypes> CoursesOpted { get; set; }
}
枚举:
public enum CoursesTypes
{
PHP,
Networking,
}
答案 0 :(得分:0)
我的理解是,当枚举是对象的标准属性时,它们将存储为整数。但是我不确定当你使用一系列枚举作为财产时会发生什么;不觉得它应该是可能的。
此链接应为您提供有关实体框架(http://www.itorian.com/2012/09/enum-support-code-first-in-entity.html)中枚举支持的更多信息。
如果您首先使用DbSet和代码并且我建议使用
,那么您不需要从Entity派生public virtual ICollection<CourseTypes> CourseOpted {get; set;}
用于签名您的收藏品。
答案 1 :(得分:0)
使用Flag Enum。你不需要任何额外的表格。它要快得多。
在您的模型中,您可以
var person = new Trainee();
p.CoursesOpted.Add(CoursesTypes.PHP);
p.CoursesOpted.Add(CoursesTypes.PHP);
......这是错的。有了旗帜你会喜欢那样
p.CoursesOpted = CoursesTypes.PHP | CoursesTypes.Networking;