【问题标题】:Entity Framework Core - Finding data in another table using a lambda functionEntity Framework Core - 使用 lambda 函数在另一个表中查找数据
【发布时间】:2020-11-18 18:14:14
【问题描述】:

我有两张桌子。 AccountTenant。一个租户有多个账户,在 DbContext 中配置如下。

modelBuilder.Entity<Account>()
            .HasOne(b => b.Tenant)
            .WithMany(a => a.Accounts)
            .OnDelete(DeleteBehavior.Cascade);

Account POCO 类如下。

public class Account : IEntityBase, IAuditedEntityBase
    {
        public int Id { get; set; }
        public int AccountNo { get; set; }
        public string? AccountName { get; set; }
        public string? Title { get; set; }
        public string? AccountFirstName { get; set; }
        public string? AccountLastName { get; set; }
        public string? MobilePhone { get; set; }
        public string? Email { get; set; }
        public string? Address1 { get; set; }
        public string? Address2 { get; set; }


        public string? PasswordHash { get; set; }
        public bool AcceptTerms { get; set; }
        public int RoleId { get; set; }
        public virtual Role Role { get; set; }
        public string? VerificationToken { get; set; }
        public DateTime? Verified { get; set; }
        public bool IsVerified => Verified.HasValue || PasswordReset.HasValue;
        public string? ResetToken { get; set; }
        public DateTime? ResetTokenExpires { get; set; }
        public DateTime? PasswordReset { get; set; }
        
        public List<RefreshToken>? RefreshTokens { get; set; }

        public bool OwnsToken(string token)
        {
            return this.RefreshTokens?.Find(x => x.Token == token) != null;
        }

        // One tenant to many user accounts
        public int TenantId { get; set; }
        public virtual Tenant? Tenant { get; set; }

        // One suburb to many User accounts
        public int SuburbId { get; set; }
        public virtual Suburb? Suburb { get; set; }
    }

Tenant POCO 类如下:

public class Tenant : IEntityBase, IAuditedEntityBase
    {
        public Tenant()
        {
            Accounts = new List<Account>();
        }
        public int Id { get; set; }
        public int TenantNo { get; set; }
        public string Database { get; set; }
        public string CompanyName { get; set; }
        public string ABN { get; set; }
        public string CompanyAccountEmail { get; set; }
        public string ContactFirstName { get; set; }
        public string ContactLastName { get; set; }
        public string OfficePhone { get; set; }
        public string Address1 { get; set; }
        public string Address2 { get; set; }
        public string BankName { get; set; }
        public string BankBSB { get; set; }
        public string BankAccount { get; set; }

        public int SuburbId { get; set; }
        public virtual Suburb Suburb { get; set; }

        // Many users to one tenant
        public virtual ICollection<Account> Accounts { get; }
    }

如果一个租户有多个帐户或“一个租户有多个帐户”,如何, 如果我有帐户 ID,请使用 lambda 函数获取tenantId。

我尝试使用以下内容但迷路了。

await tenantsContext.Accounts.Include(x => x.Tenant).Where(x => x.Id == accountId).SingleOrDefaultAsync(x => new Tenant.. and lost it here.. 

谁能告诉我和其他人你会怎么做,给定一个 accountId(相当于帐户表的 Id)并获取该帐户的 TenantId..

【问题讨论】:

    标签: c# .net-core entity-framework-core


    【解决方案1】:

    您可以使用以下方法获取具有给定 accountId 的帐户的 TenantId:

    await tenantsContext.Accounts
        .Where(x => x.Id == accountId)
        .Select(x => x.TenantId)
        .SingleOrDefaultAsync();
    

    【讨论】:

      猜你喜欢
      • 2019-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-23
      • 1970-01-01
      • 2016-02-07
      • 2018-08-02
      相关资源
      最近更新 更多