Отметьте поле "Только для чтения" с аннотациями данных

Я пытаюсь сделать поле ID только для чтения. Это поле Identity в БД, поэтому пользователь не будет его устанавливать. Однако они хотели бы это увидеть. Что мне не хватает, как показано ниже, когда назначено значение DataForm, все еще позволяет редактировать это значение.

public class StatusChoice : BindableBase
{
    private int id;

    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [Editable(false,AllowInitialValue = false)]
    public int ID
    {
        get { return id; }
        set
        {
            id = value;
            OnPropertyChanged();
        }
    }
}

Ответ 2

У вас есть два варианта в общем, исходя из ситуации.

[Editable(false)] or [ReadOnly(true)]

Ниже приведены описания из MSDN

System.ComponentModel.ReadOnlyAttribute

https://msdn.microsoft.com/en-us/library/system.componentmodel.readonlyattribute%28v=vs.110%29.aspx

Указывает, связано ли свойство, связанное с этим атрибутом, только для чтения или чтения/записи. Члены, отмеченные атрибутом ReadOnlyAttribute, установленным в true или которые не имеют метода Set, не могут быть изменены. Члены, не имеющие этого атрибута или помеченные знаком ReadOnlyAttribute, установленным в false, являются read/write, и их можно изменить. По умолчанию используется значение No.

System.ComponentModel.DataAnnotations.EditableAttribute

https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.editableattribute%28v=vs.110%29.aspx

Указывает, доступно ли поле данных.

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