EF 6.1.3和子财产

时间:2017-10-27 12:32:03

标签: c# entity-framework orm

我有这个mvc控制器:

public ActionResult Index(string country)
{
    var c = _hc.Countries.Where(l => l.Code.Equals(country, StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault();
    var customers = _hc.Customers.Where(h => h.Country.Code.Equals(country, StringComparison.InvariantCultureIgnoreCase));

    foreach (var h in customers)
        h.Country = c;

    return View(customers);
}

一切正常,但我只希望Customer.Country.Code有一个值。因为这个列出了同一个国家的所有客户......

当我使用原始SqlQuery时(因为地理定位的东西)

var customers = _hc.Database.SqlQuery<Customer>(@"
                SELECT customers.*, countries.code
                FROM [dbo].customers
                inner join countries on customers.countryid = countries.id
                where geography::Point(50.436912, 5.972050, 4326).STDistance(geography::Point([Latitude], [Longitude], 4326)) <= 25000").ToList();

我在customer对象中有countryid,因为那是Foreign Key。并且已经看到了一些可用于包含其他数据的扩展方法。但根据我的智慧,它是不可用的。可能很容易。但是星期五下午(对我而言)太难了。

1 个答案:

答案 0 :(得分:0)

要使用Include()扩展方法,您需要添加以下内容:

using System.Data.Entity;

请参阅DbExtensions.Include

使用示例:

var customers = _hc.Customers
    .Include(h => h.Country)
    .Where(h => h.Country.Code.Equals(country, StringComparison.InvariantCultureIgnoreCase));