相关疑难解决方法(0)

实体框架linq查询Include()多个子实体

这可能是一个非常重要的问题,但是当编写跨越三个级别(或更多)的查询时,包含多个子实体的好方法是什么?

即我有4个表:Company,Employee,Employee_CarEmployee_Country

公司与员工有1:m的关系.

Employee与Employee_Car和Employee_Country都有1:m的关系.

如果我想编写一个返回所有4个表中数据的查询,我目前正在编写:

Company company = context.Companies
                         .Include("Employee.Employee_Car")
                         .Include("Employee.Employee_Country")
                         .FirstOrDefault(c => c.Id == companyID);
Run Code Online (Sandbox Code Playgroud)

必须有一个更优雅的方式!这是冗长的,并产生可怕的SQL

我在VS 2010中使用EF4

linq entity-framework lazy-loading

167
推荐指数
4
解决办法
26万
查看次数

仅支持初始值设定项,实体成员和实体导航属性

我得到了这个例外:

LINQ to Entities不支持指定的类型成员'付费'.仅支持初始值设定项,实体成员和实体导航属性.

    public ActionResult Index()
    {
        var debts = storeDB.Orders
            .Where(o => o.Paid == false)
            .OrderByDescending(o => o.DateCreated);

        return View(debts);
    }
Run Code Online (Sandbox Code Playgroud)

我的Model类

public partial class Order
{
    public bool Paid {
        get {
            return TotalPaid >= Total;
        }
    }

    public decimal TotalPaid {
        get {
            return Payments.Sum(p => p.Amount);
        }
    }
Run Code Online (Sandbox Code Playgroud)

付款是一个包含字段数量的相关表格,如果我删除Where子句显示有关付款的正确信息,查询有效,任何线索有什么问题?

解决了如下建议的答案:

    public ActionResult Index()
    {
        var debts = storeDB.Orders
            .OrderByDescending(o => o.DateCreated)
            .ToList()
            .Where(o => o.Paid == false);

        return View(debts);
    }
Run Code Online (Sandbox Code Playgroud)

linq entity-framework

99
推荐指数
5
解决办法
8万
查看次数

错误:EntityType未声明具有名称的导航属性

我正在尝试计算预算减去费用并在视图中显示.我有计算工作,但我坚持如何将结果合并到我的视图中.现在我收到错误:

EntityType TETSModel.Project 不声明具有名称data的导航属性.

没有声明projects = from s in db.Projects.Include(p => data) select s;这可以正常工作,但不显示余额.

有人可以告诉我该怎么做吗?

从控制器:

public ViewResult Index()
{
    var data = (from p in db.Projects
                join ex in db.ExpenseItems on p.ProjectKEY equals ex.ProjectKEY
                group ex by p into exgroup
                select new Classes.Budget
                {
                ProjectKEY = exgroup.Key.ProjectKEY,
                OverallBudgetMinusExpenses = exgroup.Key.OverallTechnologyBudget - exgroup.Sum(g => g.ExpenseAmount),
                CurrentBudgetMinusExpenses = exgroup.Key.CurrentPeriodBudget - exgroup.Sum(g => g.ExpenseAmount)
                    });
    var projects = from s in db.Projects.Include(p => p.ContractType).Include(p => p.Division)
               select s;
    projects = …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc

1
推荐指数
1
解决办法
8234
查看次数

标签 统计

entity-framework ×2

linq ×2

asp.net-mvc ×1

c# ×1

lazy-loading ×1