0

このプロジェクトは、Entity Framework コード ファーストを使用しています。

Departmentアクティブな部門であるかどうかを指定するブール値で呼び出されるエンティティがあります。以下は、エンティティー定義の単純化されたバージョンです。Activeプロパティの流暢なマッピングもありません。

public class Department
{
    public Guid DepartmentId { get; set; }
    public string DepartmentName { get; set; }
    [DatabaseGenerated(DatabaseGeneratedOption.Computed)]
    public bool Active { get; set; }
}

データベースでは、の列はActiveですbit, not null

Activeデータベースには、新しく作成されたエントリを true に設定する列のデフォルトの制約があります。

ALTER TABLE [dbo].[Department] ADD  DEFAULT ((1)) FOR [Active]

問題は、新しいエンティティを作成するときにユーザーが false として設定することを選択できることActiveですが、このプロパティはコンテキストに追加されると false になりますが、変更の保存が呼び出された後、プロパティは true になり、データベースでは true になります。記録。

Guid ICommonRepository.AddDepartment(Department newDepartment)
{
    using(var db = new CommonDbContext())
    {
        if(newDepartment.DepartmentId == Guid.Empty)
        {
            newDepartment.DepartmentId = Guid.NewGuid();
        }
        db.Departments.Add(newDepartment); // Here newDepartment.Active is false
        db.SaveChanges();
        return newDepartment.DepartmentId; // Here newDepartment.Active is true
    }
}

Activefalse を指定できるようにする列で使用できる EF または注釈の設定はありますか?

4

1 に答える 1