簡體   English   中英

Entity Framework Core - 使用 lambda 函數在另一個表中查找數據

[英]Entity Framework Core - Finding data in another table using a lambda function

我有兩張桌子。 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 函數獲取租戶 ID。

我嘗試使用以下內容但迷路了。

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

有人可以告訴我和其他人你會如何,給定一個 accountId(相當於帳戶表的 Id)並獲取該帳戶的 TenantId..

您可以使用以下命令獲取具有給定 accountId 的帳戶的 TenantId:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM