3

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

聚合:

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,
    }
4

2 回答 2

0

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

此链接应为您提供有关实体框架 ( http://www.itorian.com/2012/09/enum-support-code-first-in-entity.html ) 中枚举支持的更多信息。

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

public virtual ICollection<CourseTypes> CourseOpted {get; set;}

为您的收藏属性签名。

于 2013-08-06T08:34:57.703 回答
0

使用标志枚举。您不需要任何额外的表格。它要快得多。

在你的模型中你可以做

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/

于 2016-03-31T13:55:41.733 回答