Asp.net Boilerplate - Как иметь личные отношения с Abpuser Class - PullRequest
0 голосов
/ 08 октября 2019

Я строю отношения один-к-одному, используя Entity Framework, Automapper и шаблон Asp.net. Однако, если я пытаюсь связать определенный класс с классом ABPuser, карта не происходит - свойство становится пустым.

Кто-нибудь знает, возможно ли иметь такую ​​ассоциацию?

Спасибо!

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

public class User : AbpUser<User> {

    public const string DefaultPassword = "123qwe";

    public virtual BusinessUnit BusinessUnit { get; protected set; }
    public virtual Guid? BusinessUnitId { get; protected set; }

    public static string CreateRandomPassword()
    {
        return Guid.NewGuid().ToString("N").Truncate(16);
    }

    public static User CreateTenantAdminUser(int tenantId, string emailAddress, string password)
    {
        var user = new User
        {
            TenantId = tenantId,
            UserName = AdminUserName,
            Name = AdminUserName,
            Surname = AdminUserName,
            EmailAddress = emailAddress,
            Password = new PasswordHasher().HashPassword(password)
        };

        user.SetNormalizedNames();

        return user;
    }
}





public class BusinessUnit : FullAuditedEntity<Guid>, IMustHaveTenant
{
    public virtual int TenantId { get; set; }

    [Required]
    [StringLength(100)]
    public virtual string Title { get; protected set; }

    public virtual Guid? ParentBusinessUnitId { get; protected set; }
    public virtual BusinessUnit ParentBusinessUnit { get; protected set; }

    public virtual long? HeadId { get; protected set; }
    public virtual User Head { get; protected set; }

    public virtual bool IsGlobalBusinessUnit { get; protected set; }

}





public class ConvergeDbContext : AbpZeroDbContext<Tenant, Role, User>
{

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        //Configures one-to-many relationship Business Unit => Parent Business Unit
        modelBuilder.Entity<BusinessUnit>().
            HasOptional(e => e.ParentBusinessUnit).
            WithMany().
            HasForeignKey(m => m.ParentBusinessUnitId)
            .WillCascadeOnDelete(false);

        modelBuilder.Entity<BusinessUnit>().
            HasOptional(e => e.Head).
            WithMany().
            HasForeignKey(m => m.HeadId)
            .WillCascadeOnDelete(false);

    }}
...