Как абстрагировать удостоверение ASP.NET в чистой архитектуре, чтобы объекты на уровне домена могли ссылаться на пользовC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как абстрагировать удостоверение ASP.NET в чистой архитектуре, чтобы объекты на уровне домена могли ссылаться на пользов

Сообщение Anonymous »

Код: Выделить всё

public class ApplicationDbContext : IdentityDbContext, IApplicationDbContext
{

public DbSet Chats { get; set; }
public DbSet ChatParticipants { get; set; }
public DbSet ChatMessages { get; set; }

protected override void OnModelCreating(ModelBuilder builder)
{

builder.Entity(entity =>
{
//Has a list of ChatParticipants
//that should have a ApplicationUser as navigation property

});

builder.Entity(entity =>
{
entity.HasMany(chat => chat.Participants)
.WithOne(part => part.Chat)
.HasForeignKey(part => part.ChatId)
.OnDelete(DeleteBehavior.Cascade);

entity.HasMany(chat => chat.Messages)
.WithOne(message => message.Chat)
.HasForeignKey(message => message.ChatId)
.OnDelete(DeleteBehavior.Cascade);
});

builder.ApplyConfigurationsFromAssembly(Assembly.GetExecutingAssembly());
base.OnModelCreating(builder);
}
}

public class ApplicationUserEntity : IdentityUser, IApplicationUser
{
public override string Id { get; set; }
public override string Email { get; set; }
public List ChatParticipations { get; set; }
}

public class ChatEntity : BaseAuditableEntity
{
public List Participants { get; set; }
public List Messages { get; set; }
}

public class ChatParticipantEntity : BaseEntity
{
public string ApplicationUserId { get; set; }
public long ChatId { get; set; }
public ChatEntity Chat { get; set; }
}

public async Task>Handle
(GetSignedInUsersChatMessagesQuery request, CancellationToken cancellationToken)
{
List errors = new List();
string userId = _currentUserService.UserId;

//I am trying to get chats that include the participants object that should include
//the reference object => applicationUser
List chatEntities = _dbContext.Chats
.Where(c => c.Participants
.Any(p => p.ApplicationUserId
.Equals(userId)))
.Include(c => c.Participants)
.Include(c => c.Messages)
.ProjectTo(_mapper.ConfigurationProvider)
.ToList();

return CommonDataResult.Success(chats);
}

  • Я использую CQRS
  • Вся суть этого подхода в том, что я могу создавать простые запросы с использованием EntityFramwork для получения все, что мне нужно для общения.
  • Я приветствую любые предложения по изменению моего подхода.
  • Я пытался использовать интерфейс для абстрагирования ApplicationUserEntity, но EntityFrameork не будет отображать отношения с интерфейсом.


Подробнее здесь: https://stackoverflow.com/questions/786 ... ies-in-dom
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как правильно реализовать шаблон репозитория в чистой архитектуре без нарушения правил домена в .NET?
    Anonymous » » в форуме C#
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Правильное место для сопоставления домена в чистой архитектуре Android
    Anonymous » » в форуме Android
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Правильное место для сопоставления домена в чистой архитектуре Android
    Anonymous » » в форуме Android
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Где карта для домена из уровня данных в чистой архитектуре MVVM?
    Anonymous » » в форуме Android
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Где карта для домена из уровня данных в чистой архитектуре MVVM?
    Anonymous » » в форуме Android
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»