Как создать дополнительные свойства ведения журнала для модели домена, используя EF6 для веб-API? - PullRequest
0 голосов
/ 21 февраля 2019

Я разрабатываю веб-API, в котором я хотел бы отслеживать пользователя, который создал, обновил или удалил определенную сущность с помощью соответствующих методов.

Использование

  • GET -> Nothing
  • POST -> Created
  • PUT -> Created & Modified
  • DELETE -> Removed

SoВы можете сказать, что Created является обязательным, а Modified + Removed необязательным.

Entities:

public User {
    public int Id { get; set; }
    public int FirstName { get; set; }
    public int LastName { get; set; }
}

public MyRandomEntity {
    public int Id { get; set; }

    // ...

    public DateTime CreatedDate { get; private set; } //mandatory
    public User CreatedBy { get; private set; } //mandatory

    public DateTime UpdatedDate { get; set; } //optional
    public User UpdatedBy { get; set; } //optional

    public DateTime RemovedAt { get; set; } //optional
    public User RemovedBy { get; set; } //optional
}

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

Есть ли способ настроить это с помощью FluentApi?Я хотел бы отметить, что нет другой сущности, которая требует тех же свойств ведения журнала, как я их называю.

Заранее спасибо

1 Ответ

0 голосов
/ 21 февраля 2019

В EF все поля обязательны для заполнения, если вы не укажете, что они обнуляются.Не обязательные поля являются типами обнуляемых типов:

public MyRandomEntity {
    public int Id { get; set; }

    // ...

    public DateTime CreatedDate { get; private set; } //mandatory
    public User CreatedBy { get; private set; } //mandatory

    public DateTime? UpdatedDate { get; set; } //optional
    public User? UpdatedBy { get; set; } //optional

    public DateTime? RemovedAt { get; set; } //optional
    public User? RemovedBy { get; set; } //optional
}
...