【问题标题】:The entity or complex type 'AdministratorModel' cannot be constructed in a LINQ to Entities query无法在 LINQ to Entities 查询中构造实体或复杂类型“AdministratorModel”
【发布时间】:2016-09-29 14:23:47
【问题描述】:

我正在尝试在 linq 语句中连接两个表,并构建一个“管理员模型”,并将“管理员合同模型”附加到父模型。

Dim response = (From a In db.Administrators
                    Join ac In db.AdministratorContracts
                            On a.NDE_Staff_ID Equals ac.NDE_Staff_ID
                    Order By a.LastName, a.FirstName
                    Select New AdministratorModel With {
                        .NDE_Staff_ID = a.NDE_Staff_ID,
                        .FirstName = a.FirstName,
                        .LastName = a.LastName,
                        .Contract = New AdministratorContractModel With {
                                            .AdministratorContractsID = ac.AdministratorContractsID,
                                            .NDE_Staff_ID = ac.NDE_Staff_ID,
                                            .NDE_Number = ac.NDE_Number,
                                            .ForYear = ac.ForYear,
                                            .Contract = ac.Contract,
                                            .ContractDays = ac.ContractDays,
                                            .Salary = ac.Salary,
                                            .Salary_AddComp = ac.Salary_AddComp,
                                            .Salary_Benefits = ac.Salary_Benefits,
                                            .Experience_System = ac.Experience_System,
                                            .Experience_Total = ac.Experience_Total,
                                            .EducationAttained = ac.EducationAttained,
                                            .BenefitsExplanation = ac.BenefitsExplanation,
                                            .AddCompExplanation = ac.AddCompExplanation}})

【问题讨论】:

  • 我也试过这个,但没有运气......Dim response = (From a In db.Administrators Join ac In db.AdministratorContracts On a.NDE_Staff_ID Equals ac.NDE_Staff_ID Order By a.LastName, a.FirstName Select New AdministratorModel With { .NDE_Staff_ID = a.NDE_Staff_ID, .FirstName = a.FirstName, .LastName = a.LastName, .Contract = ac})

标签: vb.net asp.net-mvc-4 linq-to-entities


【解决方案1】:

问题是 LinqToEntities 正在尝试将您的查询转换为 SQL,但对您的模型类型一无所知(假设这些与数据库类型不同)。

如果您在尝试创建类型之前枚举查询,它应该可以工作。尝试在 OrderBy() 之后和 Select() 之前调用 ToList()。这将创建一个数据库类型的内存数据集,然后将其从数据库中分离出来,从而允许您的其余代码工作。

请注意,如果您想进行任何过滤,您应该在调用 ToList() 之前执行此操作,因为这将减少内存中数据集的大小。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-11
    • 2017-05-31
    • 2015-02-06
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多