我实际上不确定这是继承的情况,还是完全其他的情况。我的数据库中有一组3个表。地理销售,CountryRef和RegionRef。 EF Designer GeoSales表的CountryID是CountryRef表的外键。 Countryref表具有regionID,这是Regionref表的外键。每个GeoSale都有一个CountryID,每个Countryref都有一个RegionID。还有一个Location表,该表具有Geosales表的locationID外键

在这种情况下,我希望可以在我的应用程序中显示RegionName字段。我主要是一名SQL开发人员,所以我对c#的了解不是很强,我看到的绝大多数教程都是针对代码优先的方法,并且有一堆我不太了解的C#代码。在Sql中,我将只使用2个这样的联接:

SELECT * FROM GeoSales G
JOIN CountryRef C ON C.CountryId = G.CountryID
JOIN RegionRef R ON R.RegionID = C.RegionID
JOIN Location L ON L.LocationdiD = G.LocationID


在我的MVC / EF项目中,如何创建这种关系,以使View可以在GeoSales记录中包含Region信息?

我考虑过的一件事是,除了countryref表外,还将FK添加到regionref表到GeoSales表中,但是我不确定这是否会导致我正在寻找的行为。在Geosale记录中可以有1个区域和1个国家,并且一个区域中可以有许多国家,并且一个国家中可以有许多地理销售。
这是我的GeoSales课程

public partial class GeoSale
{
    public int ID { get; set; }
    public int LocationID { get; set; }
    public Nullable<int> CountryId { get; set; }
    public Nullable<decimal> Amount { get; set; }
    public Nullable<int> Year { get; set; }

    public virtual CountryRef CountryRef { get; set; }
    public virtual Location Location { get; set; }

}
}


这是我的CountryRef课程

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

        public int CountryID { get; set; }
        public string CountryName { get; set; }
        public Nullable<int> RegionID { get; set; }

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

最佳答案

有更多的最佳方法可以做到这一点。 EF具有关系,它既可以延迟加载,也可以同时加载。因此,如果您确定将需要这些链接的实体,则可以:

var x = context.GeoSales
          .Include(n => n.Country)
          .Include(n => n.Region)
          .Include(n => n.Location)
          .WhateverElseYouNeed(


您也可以查看此内容以了解有关将实体链接在一起的更多信息:https://msdn.microsoft.com/en-us/library/jj574232(v=vs.113).aspx

关于c# - Entity Framework 相当于多个联接?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50253547/

10-10 03:23