EF6 запрос многих ко многим, используя мост - PullRequest
0 голосов
/ 06 февраля 2019

как я могу запросить это отношение многие ко многим?Я начинаю с ACCOUNT и хочу вернуть связанный с ним ExecutingBroker.Firm.

Я начинаю с Учетной записи, затем, я полагаю, просверлил до МЕНЕДЖЕРА, затем до MAPPING_MANAGER, затем до EXECUTINGBROKER.

Вот мой запрос на данный момент ...

            var student = dbEF.Accounts        
                        .Where(x => x.AccountNumber == acctNum)
                        .Select(x => new DTOCrmDetails()
                        {
                            AccountNumber = x.AccountNumber,
                            AccountName = x.AccountName,
                            DateOpened = x.DateOpened,

                            CommissionId = x.CommissionId,
                            Commission = x.Commission,

                            ManagerID = x.ManagerID,
                            ManagerName = x.Manager.ManagerName,
                            Manager = x.Manager,

                            Employees = x.Manager.Employees,

                            WireInstructionsUSD = x.Manager.WireInstructionsUSDs

                        }).FirstOrDefault();  

enter image description here

ниже - код, который был сгенерирован из ef из существующей базы данных.

    public partial class Manager
{
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
    public Manager()
    {
        this.Accounts = new HashSet<Account>();
        this.Employees = new HashSet<Employee>();
        this.WireInstructionsUSDs = new HashSet<WireInstructionsUSD>();
        this.Mapping_ManagersExecutingBrokers = new HashSet<Mapping_ManagersExecutingBrokers>();
    }

    public int ManagerID { get; set; }
    public string ManagerName { get; set; }
    public string Strategy { get; set; }
    public string ManagerShortCode { get; set; }
    public Nullable<int> WireInstructionsUsdID { get; set; }
    public Nullable<int> WireInstructionsForeignID { get; set; }
    public string MEtradingPlatform { get; set; }
    public string EtradingCostResp { get; set; }
    public string NotesManager { get; set; }
    public bool MainStrategy { get; set; }
    public string PathPayments { get; set; }
    public string PathEtrading { get; set; }
    public string LEI { get; set; }

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<Account> Accounts { get; set; }
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<Employee> Employees { get; set; }
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<WireInstructionsUSD> WireInstructionsUSDs { get; set; }
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<Mapping_ManagersExecutingBrokers> Mapping_ManagersExecutingBrokers { get; set; }
}

}

{
using System;
using System.Collections.Generic;

public partial class Mapping_ManagersExecutingBrokers
{
    public int Mapping_ManagersExecutingBrokersId { get; set; }
    public Nullable<int> ManagerID { get; set; }
    public Nullable<int> ExecutingBrokersId { get; set; }

    public virtual ExecutingBroker ExecutingBroker { get; set; }
    public virtual Manager Manager { get; set; }
}

}

    public partial class ExecutingBroker
{
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
    public ExecutingBroker()
    {
        this.Mapping_ManagersExecutingBrokers = new HashSet<Mapping_ManagersExecutingBrokers>();
    }

    public int ExecutingBrokersId { get; set; }
    public string Firm { get; set; }

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<Mapping_ManagersExecutingBrokers> Mapping_ManagersExecutingBrokers { get; set; }
}

1 Ответ

0 голосов
/ 07 февраля 2019

Вы должны пройти через Mapping_ManagersExecutingBrokers, так как вы смоделировали это таким образом.Имейте в виду, что у вас есть коллекция Фирм, так как это отношения многие ко многим.

.Select(account => new { Firms = account.Manager.Mapping_ManagersExecutingBrokers
                                .Select(meb => meb.ExecutingBroker.Firm) });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...