【问题标题】:Getting Class instance in Collection - EF Code First Fluent API在集合中获取类实例 - EF Code First Fluent API
【发布时间】:2015-09-20 19:49:10
【问题描述】:

我有以下三个课程

Om_MembershipCharges 类

public class Om_MembershipCharges
{
    [Key]
    public Int32 MembershipChargesID { get; set; }
    public Decimal Amount { get; set; }
    public Int16 PerMonth { get; set; }
    public Int16? CountryID { get; set; }
    public Int16 MemebershipTypeID { get; set; }



    public virtual Om_MembershipType MemebershipType { get; set; }
    public virtual Om_Country Country { get; set; }
}

Om_MembershipType 类

public class Om_MembershipType
{
    [Key]
    public Int16 MemebershipTypeID { get; set; }
    public String MemebershipType { get; set; }
    public Boolean IsDefaultMembership { get; set; }

    public virtual ICollection<Om_MembershipCharges> MembershipCharges { get; set; }
}

Om_Country 类

public class Om_Country
{
    [Key]
    public Int16 CountryID { get; set; }
    public String CountryName { get; set; }
    public Boolean IsActive { get; set; }

    public Int16? CurrencyID { get; set; }
    public Int32? MembershipChargesID { get; set; }

    public virtual Om_Currency Currency { get; set; }
    public Om_MembershipCharges MembershipCharges { get; set; }

}

下面是我在Om_MembershipType Class 中使用MembershipCharges Property 获取所有会员费用的方法。我正在使用Include 来获取收藏。

public async Task<KeyValuePair<String, Om_MembershipType>> ListByMType(String mType)
{
    try
    {
        using (var membershipChargesContext = new DatabaseTables())
        {
            using (var transaction = new TransactionScope(
                TransactionScopeOption.Required,
                new TransactionOptions { IsolationLevel = IsolationLevel.ReadUncommitted },
                TransactionScopeAsyncFlowOption.Enabled))
            {
                membershipChargesContext.Configuration.ProxyCreationEnabled = false;
                var data = await membershipChargesContext
                    .tblMembershipType
                    .Where(i => i.MemebershipType == membershipType)
                    .Include(i => i.MembershipCharges)
                    .FirstOrDefaultAsync();
                transaction.Complete();
                return new KeyValuePair<String, Om_MembershipType>("", data);
            }
        }
    }
    catch (Exception ex)
    {
        var exception = ex.Message;
        if (ex.InnerException != null)
            exception = ex.InnerException.ToString();
        return new KeyValuePair<String, Om_MembershipType>(exception, null);
    }
}

有什么方法可以获取Membership Charges collection 中的 Country Instance 吗?

【问题讨论】:

    标签: c# asp.net-mvc-4 c#-4.0 entity-framework-6 entity-framework-core


    【解决方案1】:

    有没有办法在 Membership Charges 集合中获取 Country Instance?

    是的:

    var data = await membershipChargesContext
        .tblMembershipType
        .Where(i => i.MemebershipType == membershipType)
        .Include(i => i.MembershipCharges.Select(m =>  m.Country))
        .FirstOrDefaultAsync();
    

    您可以通过后续的Select 语句扩展Include 语句中的表达式以包含嵌套的导航属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-26
      • 1970-01-01
      • 1970-01-01
      • 2013-10-21
      • 2013-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多