У меня есть сайт 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 создает столбец в моей таблице dbo.Organisations для каждого типа разрешений (Permissions_Contacts, Permissions_Messages и т. д.).
В базе данных, однако, уже есть много организаций, и я задавался вопросом, был ли способ введения значения по умолчанию. Если я обновляю свою базу данных, теперь все разрешения будут 0 (заблокировано), однако я бы хотел, чтобы значение по умолчанию было разным для каждой категории разрешений, например. Права администратора для контактов/сообщений/групп и заблокированные права для данных, поскольку данные будут настроены как и когда пользователь запросит его.
Я скоро добавлю функциональность к уровню администрирования сайта, на котором созданы организации, и сделайте выбор UserPermissions обязательным для всех областей, но я бы предпочел не возвращаться и вручную изменять все разрешения существующих организаций - мои дефолты.
Есть ли способ автоматического наложения этих значений по умолчанию для существующих организаций в базе данных?
Вы пробовали использовать это https://msdn.microsoft.com/en-us/library/system.componentmodel.defaultvalueattribute%28v=vs.110%29.aspx, я не знаю, будет ли это работать, хотя – George
Спасибо, что я никогда не видел эту собственность. Я попробую добавить тег [DefaultValue (typeof (PermissionLevels), PermissionLevels.Administrator)] 'к свойствам и посмотреть, будет ли он принудительно применяться к уже существующим в таблице. Я предполагаю, что после этого вы получите и настроите работу? – JonnyKnottsvill
Все должно быть хорошо, как я сказал в своем первом комментарии, я не знаю, будет ли он редактировать текущий db для этих значений. – George