Итак, я пытаюсь создать простое приложение для чата.
У меня есть класс User, который реализует IdentityUser:
public class User : IdentityUser
{
public IEnumerable<Message> Messages { get; set; }
}
У меня также есть Receiver и Sender, которые присущи из Пользователь:
public class Receiver : User
{
}
и
public class Sender : User
{
}
Наконец, у меня есть класс Сообщение: сообщение имеет 1 отправителя и 1 получателя.
public class Message
{
public int Id { get; set; }
public string SenderId { get; set; }
public string ReceiverId { get; set; }
public virtual Sender Sender { get; set; }
public virtual Receiver Receiver { get; set; }
public string Text { get; set; }
public byte[] File { get; set; }
public DateTime Date { get; set; }
}
Это мои DbSets:
public DbSet<User> Users { get; set; }
public DbSet<Receiver> Receivers { get; set; }
public DbSet<Sender> Senders { get; set; }
public DbSet<Message> Messages { get; set; }
Это мой OnModelCreating:
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.Entity<Message>()
.HasOne(m => m.Receiver)
.WithMany(r => r.Messages)
.HasForeignKey(m => m.ReceiverId);
builder.Entity<Message>()
.HasOne(m => m.Sender)
.WithMany(s => s.Messages)
.HasForeignKey(m => m.SenderId);
}
Так что мой вопрос ... Есть ли лучший способ реализовать эти классы? Можно ли использовать класс User вместо класса Receiver и Sender?
Спасибо!