Использование DataAnnotations с платформой объекта

Я использовал Платформу Объекта с VS2010 для создания простого класса человека со свойствами, firstName, lastName, и электронной почты. Если я хочу присоединить DataAnnotations как то, как сделан в этом сообщении в блоге, у меня есть небольшая проблема, потому что мой класс человека динамично сгенерирован. Я мог отредактировать динамично сгенерированный код непосредственно, но любое время, я должен обновить свою модель весь мой код доступа, вытереть.

Первый инстинкт должен был создать частичный класс и попытку присоединить аннотации, но это жалуется, что я пытаюсь переопределить свойство. Я не уверен, можно ли сделать объявления свойства в C# как объявления функции в C++. Если Вы могли, это могло бы быть ответом. Вот отрывок того, что я попробовал:

namespace PersonWeb.Models
{
  public partial class Person
  {
    [RegularExpression(@"(\w|\.)+@(\w|\.)+", ErrorMessage = "Email is invalid")]
    public string Email { get; set; } 
    /* ERROR: The type 'Person' already contains a definition for 'Email' */
  }
}

10
задан dcompiled 8 June 2010 в 17:59
поделиться

2 ответа

Дружественный класс - это более или менее то направление, в котором движется ваш фрагмент кода, за исключением того, что ваш вручную закодированный частичный класс Person будет иметь внутренний класс, например:

[MetadataType(typeof(Person.Metadata))]
public partial class Person {
    private sealed class MetaData {
        [RegularExpression(...)]
        public string Email { get; set; }
    }
}

Или вы можете иметь вручную частичный класс Person и отдельный класс Meta, например:

[MetadataType(typeof(PersonMetaData))]
public partial class Person { }

public class PersonMetaData {
[RegularExpression(...)]
public string Email;
}

Это обходные пути, и наличие сопоставленного класса Presentation может быть более подходящим.

24
ответ дан 3 December 2019 в 15:51
поделиться

Вам нужно либо использовать "дружественный" класс метаданных, либо (мое предпочтение) проецировать на модель представления вместо привязки представлений непосредственно к сущностям.

3
ответ дан 3 December 2019 в 15:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: