0

アプリケーションで ef 4.1 を使用しており、以下のようなエンティティがあります。

public partial class Role
    {
        [Key]
        public int Id { get; set; }

        [StringLength(20)]
        [Required()]
        public string RoleTitle { get; set; }

        public virtual ICollection<User> Users { get; set; }
    }



    public partial class User
        {
            [Key]
            [DatabaseGenerated(DatabaseGeneratedOption.None)]
            public long UserId { get; set; }

            [StringLength(20)]
            [Required()]
            public string UserName { get; set; }

            public bool Status { get; set; }

            [Required()]
            public virtual Role Role { get; set; }
    }

ステータスなどのユーザーエンティティのフィールドを更新するたびに、関係を作り直す必要があるというのは本当ですか? ステータス フィールドのみを更新して変更を保存したい場合 ( Unit of Work を使用)、「ロール フィールドが必要です」と表示されます。

4

1 に答える 1

1

いいえ、関係を作り直す必要はありません。Requiredまた、仮想プロパティに注釈を付けるべきではありません。Role テーブルの ForeignKey ID フィールドに配置する必要があります。そもそも User クラスで Role を正しく設定していないため、エラーが発生していると思います。そのため、再作成する必要があります。

説明のために、 User クラスは次のようになります。

    public partial class User
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public long UserId { get; set; }

        [StringLength(20)]
        [Required]
        public string UserName { get; set; }

        [Required, ForeignKey("Role")]
        public int RoleID { get; set; }

        public bool Status { get; set; }

        public virtual Role Role { get; set; }
    }
于 2013-01-09T15:13:25.753 に答える