我有一个MVC站点使用包含所谓的“组织”的对象,如下代码首先迁移:设置默认值 - 回填数据库
public class Organisation
{
public int Id { get; set; }
public string Name { get; set; }
public string Code { get; set; }
public virtual ICollection<Contact> Contacts { get; set; }
public virtual ICollection<Location> Locations { get; set; }
public UserPermissions Permissions { get; set; }
}
我想实现用户权限为每个我的网站上的区域。作为结果,权限属性已经在上面被新添加的并且是类型UserPermissions的目的:
public class UserPermissions
{
public PermissionLevel Contacts { get; set; }
public PermissionLevel Messages { get; set; }
public PermissionLevel Groups { get; set; }
public PermissionLevel Data { get; set; }
}
凡PermissionLevels是定义为一个枚举:
public enum PermissionLevel
{
Locked = 0,
View = 1,
Administrator = 2
}
感觉的结构这个实现很好,并且在添加迁移时,EF会在每个权限类型(Permissions_Contacts,Permissions_Messages等)的dbo.Organisations表中创建一个列。
数据库但已经有很多机构,我想知道是否有征收默认的方式。如果我现在更新了我的数据库,所有权限都将为0(锁定),但是我希望每个权限类别的默认值不同。联系人/消息/组的管理员权限和数据的锁定权限,因为数据将在用户请求时进行设置。
我很快将功能添加到创建组织的站点的管理层,并且为所有区域选择UserPermissions为强制选项,但我不希望返回并手动更改所有权限现有的组织是我的默认设置。
有自动施加这些默认的数据库中现有的组织方式?
您是否尝试过使用此https://msdn.microsoft.com/en-us/library/system.componentmodel.defaultvalueattribute%28v=vs.110%29。aspx,我不知道这是否会工作,虽然 – George
谢谢,这很有趣,我从来没有见过这个属性。我会尝试在属性中添加'[DefaultValue(typeof(PermissionLevels),PermissionLevels.Administrator)]'标签,看看它是否已经被强制执行。我假设在此之后获得并设置工作正常? – JonnyKnottsvill
应该没问题,正如我在第一条评论中所说的那样,我不知道它是否会将当前数据库编辑为这些值。 – George