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

フラグ列挙型を使用します。追加のテーブルは必要ありません。それははるかに高速です。

あなたのモデルでできること

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 に答える
0

列挙型がオブジェクトの標準プロパティである場合、列挙型が整数として格納されることは私の理解です。しかし、列挙型のコレクションをプロパティとして使用するとどうなるかわかりません。それは可能であるべきだとは思わない。

このリンクは、Entity Framework ( 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 に答える