Я разрабатываю приложение для изучения .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.....()
Для ограничения, если пользователь удален и этот пользователь владеет страницей, я хочу, чтобы страница была удалена
Заранее спасибо!