2014-05-23 2 views
18

Можно ли с помощью аннотаций данных, чтобы добавить значение по умолчанию для Int собственностиЗначение по умолчанию в MVC модели с помощью аннотаций данных

что-то вроде

[DefaultValue=1] 
public int MyId {get; set;} 
+3

Не работает ... Просто используйте конструктор. –

+1

Возможный дубликат [Аннотирование свойств модели со значениями по умолчанию] (http://stackoverflow.com/questions/6779881/annotating-properties-on-a-model-with-default-values) – scheien

ответ

32

Попробуйте это - установить значение по умолчанию в конструкторе:

public class YOURMODEL 
{ 
    public int MyId { get; set; } 

    public YOURMODEL() 
    { 
     MyId = 1;  
    } 
} 

Позднее добавление другим пользователем: Так как C# 6.0 (2015) этот простой синтаксис был llowed:

public class YOURMODEL 
{ 
    public int MyId { get; set; } = 1; 
} 
0

Вы можете сделать это только с помощью конструктора класса. Ваш код должен таким образом выглядеть следующим образом:

public class MyModel 
{ 
    public MyModel() 
    { 
     MyId = 1; 
    } 

    public int MyId {get; set;} 
} 

Это приведет к MyId имущества, установленного в 1 всякий раз, когда новый экземпляр класса выполнен. Однако, если привязка к модели обнаруживает, что пользователь указал значение для MyId, он будет перезаписывать значение по умолчанию с указанным пользователем значением.

1

Метод конструктора, конечно, правильно (согласно @Nilesh), но это решение не содержит никаких устаревших данных, которые вы, возможно, уже создали в своей базе данных.

Вы также можете обновить устаревшие данные, генерируя миграцию, а затем регулируя метод AddColumn ... константы выглядит

AddColumn("dbo.Orgs", "MyId", c => c.Int(nullable: false)); 

изменения:

AddColumn("dbo.Orgs", "MyId", c => c.Int(nullable: false, defaultValue: 1)); 

Примечание, это будет также создать базу данных триггер, который автоматически обновит значение по умолчанию для INSERT, чтобы технически не требовалось использование метода конструктора из перспективы базы данных, но установка значения с использованием конструктора по-прежнему является лучшей практикой.

Смежные вопросы