このプロジェクトは、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
}
}
Active
false を指定できるようにする列で使用できる EF または注釈の設定はありますか?