该项目首先使用实体框架代码。
我有一个Department
用布尔值调用的实体,它指定它是否是活动部门。这是实体定义的简化版本。该Active
属性也没有流畅的映射。
public class Department
{
public Guid DepartmentId { get; set; }
public string DepartmentName { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public bool Active { get; set; }
}
在数据库中,for 的列Active
是bit, not null
.
我们在数据库中有一个默认约束,用于Active
将新创建的条目设置为 true。
ALTER TABLE [dbo].[Department] ADD DEFAULT ((1)) FOR [Active]
问题是,当我创建一个新实体时,用户可以选择设置Active
为false,但是这个属性在添加到上下文时是false,但是在调用save changes之后,该属性是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
}
}
EF 中是否有可以在Active
允许我指定 false 的列上使用的设置或注释?