在Aggregates EntityFramework CodeFirst </enum>中列出<enum>

时间:2013-08-06 08:03:24

标签: c# entity-framework enums

我最初在聚合中使用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,
    }

2 个答案:

答案 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;

http://blog.falafel.com/entity-framework-enum-flags/