c# - Sql查询到linq的转换

标签 c# sql asp.net-mvc linq entity-framework

我尝试在 MVC 中使用 EF 将 select 的 sql 查询转换为 linq 查询,但确实遇到了错误。

在 SQL 中,我能够为查询获取 6 条记录,同样,当我尝试将其转换为 linq 时,它会显示一些错误。

以下是我的 SQL 查询:

SELECT        
   PurchaseOrderMaster.*, PurchaseOrderDetails.*, Vendor.*, 
   BusinessUnit.*, InvoiceMaster.*, TenantEmployee.*
FROM            
   PurchaseOrderMaster 
INNER JOIN
   PurchaseOrderDetails ON PurchaseOrderMaster.TenantID = PurchaseOrderDetails.TenantID 
                        AND PurchaseOrderMaster.PurchaseOrderNumber = PurchaseOrderDetails.PurchaseOrderNumber 
                        AND PurchaseOrderMaster.PurchaseOrderDate = PurchaseOrderDetails.PurchaseOrderDate 
INNER JOIN
   InvoiceMaster ON PurchaseOrderMaster.TenantID = InvoiceMaster.TenantID 
                 AND PurchaseOrderMaster.PurchaseOrderNumber = InvoiceMaster.PurchaseOrderNumber 
                 AND PurchaseOrderMaster.PurchaseOrderDate = InvoiceMaster.PurchaseOrderDate 
INNER JOIN
    BusinessUnit ON PurchaseOrderMaster.TenantID = BusinessUnit.TenantID 
                 AND PurchaseOrderMaster.BusinessUnitID = BusinessUnit.BusinessUnitID 
INNER JOIN
    TenantEmployee ON PurchaseOrderMaster.TenantID = TenantEmployee.TenantID 
INNER JOIN
    Vendor ON PurchaseOrderMaster.TenantID = Vendor.TenantID 
           AND PurchaseOrderMaster.VendorID = Vendor.VendorID

对于这个查询,我可以获得 6 条记录。

我的 linq 查询是:

return (from pom in db.PurchaseOrderMaster
                    join pod in db.PurchaseOrderDetails on pom.TenantID equals pod.TenantID
                    where pom.PurchaseOrderNumber == pod.PurchaseOrderNumber && pom.PurchaseOrderDate == pod.PurchaseOrderDate
                    join inv in db.InvoiceMaster on pom.TenantID equals inv.TenantID
                    where pom.PurchaseOrderNumber == inv.PurchaseOrderNumber && pom.PurchaseOrderDate == inv.PurchaseOrderDate
                    join bu in db.BusinessUnit on pom.BusinessUnitID equals bu.BusinessUnitID
                    join te in db.TenantEmployee on pom.TenantID equals te.TenantID                
                    join v in db.Vendor on pom.TenantID equals v.TenantID
                    where pom.VendorID == v.VendorID
                    orderby pom.PurchaseOrderNumber ascending, pom.PurchaseOrderDate                   descending
                select new { pom, pod, inv, bu, te, v }).ToList();

在调试时,出现以下错误:

{"Invalid column name 'invoiceMasterModel_TenantID'.\r\nInvalid column name 'invoiceMasterModel_PurchaseOrderNumber'.\r\nInvalid column name 'invoiceMasterModel_PurchaseOrderDate'.\r\nInvalid column name 'invoiceMasterModel_InvoiceNumber'.\r\nInvalid column name 'invoiceMasterModel_InvoiceDate'.\r\nInvalid column name 'tenantEmployeeModel_TenantID'.\r\nInvalid column name 'tenantEmployeeModel_EmployeeID'."}

在发票表内,它无法找到某些列,因此根据我的说法抛出错误..

我尝试了很多可能的方法,但无法解决这个问题。

有什么想法吗..?

最佳答案

问题出在我的实体上。

我所做的是,我再次添加了我的实体,并据此为关联表重新创建了模型,删除了之前的表。

终于解决了我的问题

关于c# - Sql查询到linq的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23358358/

相关文章:

c# - 解析字节数组时抛出什么异常? (C#)

c# - 反序列化使用属性名称/值对的 xml

c# - 使用 C# 运行 java 应用程序并从 CMD 获取其输出

mysql - 如何更改列并更改默认值?

c# - Sum(with Coalesce) with Group By in linq (for EF6)

asp.net-mvc - MVC2 JSON 操作,如果我想要 RESTful,我应该允许 GET、POST 还是两者都允许?

jquery - 如何使用Jquery设置下拉列表中的值?

c# - 如何减少特定于平台的项目之间的代码重复量?

java - Apache Derby : java. sql.SQLSyntaxErrorException

asp.net-mvc - 将ASP.NET MVC View 上的各个按钮映射到 Controller 操作