Выберите подходящее отношение для моих сущностей, используя Fluent API - PullRequest
0 голосов
/ 05 ноября 2019

Я разрабатываю приложение для изучения .NET Цель приложения довольно проста: пользователь может вставить свой код и поделиться им с другими пользователями.

Итак, есть 2 сущности:

Пользователь:

namespace OnSeCopie.Identity.Entities
{
    /// <summary>
    /// Représente un utilisateur
    /// </summary>
    public sealed class User : Entity<int>
    {
        /// <summary>
        /// Le nom d'utilisateur de l'utilisateur
        /// </summary>
        public string Username { get; private set; }

        /// <summary>
        /// Le hash du mot de passe de l'utilisateur
        /// </summary>
        public byte[] PasswordHash { get; private set; }

        /// <summary>
        /// Le salt du mot de passe de l'utilisateur
        /// </summary>
        public byte[] PasswordSalt { get; private set; }


        public User() : base()
        {

        }

        public User(string username, byte[] passwordHash, byte[] passwordSalt)
            : base()
        {
            Username = username;
            PasswordHash = passwordHash;
            PasswordSalt = passwordSalt;
        }
        public User(int id, string username, byte[] passwordHash, byte[] passwordSalt)
            : base(id)
        {
            Username = username;
            PasswordHash = passwordHash;
            PasswordSalt = passwordSalt;
        }
}

И CodePage

namespace OnSeCopie.CodePage.Entities
{
    public sealed class CodePage : Entity<int>
    {
        /// <summary>
        /// Titre optionnel de la page de code
        /// </summary>
        public string Title { get; private set; }

        /// <summary>
        /// Indication du langage de la page de code
        /// </summary>
        public string Language { get; private set; }

        /// <summary>
        /// Contenu de la page de code
        /// </summary>
        public string Content { get; private set; }

        /// <summary>
        /// Date de création
        /// </summary>
        public DateTime CreatedAt { get; private set; }

        /// <summary>
        /// Date de modification
        /// </summary>
        public DateTime UpdatedAt { get; private set; }

        /// <summary>
        /// Flag indiquant si il s'agit d'une page de code privée
        /// </summary>
        public bool IsPrivate { get; private set; }

        /// <summary>
        /// Propriétaire de la page de code (Anonyme si null)
        /// </summary>
        public User Owner { get; private set; }

        /// <summary>
        /// Liste des utilisateurs autorisés (tous si null)
        /// </summary>
        public IEnumerable<User> AuthorizedUsers { get; private set; }

        public CodePage() : base()
        {

        }

        public CodePage(string title, string language, string content, DateTime createdAt,
            DateTime updatedAt, bool isPrivate, User owner, IEnumerable<User> authorizedUsers) : base()
        {
            Title = title;
            Language = language;
            Content = content;
            CreatedAt = createdAt;
            UpdatedAt = updatedAt;
            IsPrivate = isPrivate;
            Owner = owner;
            AuthorizedUsers = authorizedUsers ?? new List<User>();
        }

        public CodePage(int id, string title, string language, string content, DateTime createdAt,
            DateTime updatedAt, bool isPrivate, User owner, IEnumerable<User> authorizedUsers) : base(id)
        {
            Title = title;
            Language = language;
            Content = content;
            CreatedAt = createdAt;
            UpdatedAt = updatedAt;
            IsPrivate = isPrivate;
            Owner = owner;
            AuthorizedUsers = authorizedUsers ?? new List<User>();
        }
}

Что я пытаюсь понять исделать, это определить отношение. Я использую свободный API и хочу сделать следующее:

У CodePage есть один владелец. У CodePage может быть список авторизованных пользователей, но я не знаю, как это сделать ... Я хочу представить этоотношение внутри сущности CodePage (примерно так:

modelBuilder.Entity<CodePage>()
        .Has....()
        .With.....()

Для ограничения, если пользователь удален и этот пользователь владеет страницей, я хочу, чтобы страница была удалена

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...