クエリに結合を追加することで、以前にいくつかの助けを得ました。同じクエリに実際に複数の結合を追加する必要があることに気付きましたが、(元の結合に基づいて)さまざまな方法を試しましたが、エラーが発生し続けます。
私はSchemeNameというモデルを持っています-
namespace TRS.Models
{
public class SchemeName
{
[Key]
public int SchemeNameID { get; set; }
[Display(Name = "Scheme Name")]
public string Name { get; set; }
public virtual ICollection<Benefit> Benefits { get; set; }
}
}
そして、それぞれがSchemeIDを持つ次の2つのような従業員福利厚生の複数のモデル-
namespace TRS.Models
{
public class Pension
{
[Key]
public string UserName { get; set; }
public bool PensionRequired { get; set; }
public int PensionSchemeNameID { get; set; }
public int PensionProviderID { get; set; }
public int PensionBenefitLevelID { get; set; }
public decimal PensionEmployerCost { get; set; }
public decimal PensionEmployeeCost { get; set; }
public virtual PensionBenefitLevel PensionBenefitLevel { get; set; }
[Required]
public virtual User User { get; set; }
}
}
namespace TRS.Models
{
public class LifeAssurance
{
[Key]
public string UserName { get; set; }
public bool LifeAssuranceRequired { get; set; }
public int LifeAssuranceSchemeNameID { get; set; }
public int LifeAssuranceProviderID { get; set; }
public string LifeAssuranceBenefitLevel { get; set; }
public decimal LifeAssuranceEmployerCost { get; set; }
public decimal LifeAssuranceEmployeeCost { get; set; }
[Required]
public virtual User User { get; set; }
}
}
私のコントローラーには次のものがあります-
var trs = db.Users
.Join(db.SchemeNames,
user => user.Pension.PensionSchemeNameID,
schemeName => schemeName.SchemeNameID,
(user, schemeName) => new { User = user, SchemeName = schemeName })
.Where(a => UserIDs.Contains(a.User.UserName))
.Select(a => new TRSViewModel
{
UserName = a.User.UserName,
FirstName = a.User.UserDetails.FirstName,
LastName = a.User.UserDetails.LastName,
Salary = a.User.UserDetails.Salary,
PensionSchemeName = a.SchemeName.Name,
これはPensionSchemeNameを表示するのに最適ですが、LifeAssuranceSchemeName(およびその他)も表示する必要がありますが、前述したようにエラーが発生し続けます。LifeAssuranceSchemeNameの詳細を含むJoinを追加する必要があると思ったので、追加してみました-
var trs = db.Users
.Join(db.SchemeNames,
user => user.Pension.PensionSchemeNameID,
schemeName => schemeName.SchemeNameID,
(user, schemeName) => new { User = user, SchemeName = schemeName })
.Join(db.SchemeNames,
la => la.Pension.PensionSchemeNameID,
schemeName => schemeName.SchemeNameID,
(user, schemeName) => new { User = user, SchemeName = schemeName })
.Where(a => UserIDs.Contains(a.User.UserName))
.Select(a => new TRSViewModel
しかし、これは私にエラーを与えます-
エラー10「AnonymousType#1」に「Pension」の定義が含まれておらず、タイプ「AnonymousType#1」の最初の引数を受け入れる拡張メソッド「Pension」が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか?)
これらの追加の結合を追加する方法はありますか?