[英]Custom Linq query for Entity Framework & ASP.NET MVC app
I have been working on an ASP.NET MVC app using Entity Framework.我一直在使用实体框架开发 ASP.NET MVC 应用程序。 Also, it's my first time developing an ASP.NET MVC app.
此外,这是我第一次开发 ASP.NET MVC 应用程序。 I have been struggling (close to a month of trying and googling) to write a linq query to display results in jQuery datatable for the below SQL query.
我一直在努力(近一个月的尝试和谷歌搜索)编写 linq 查询以在 jQuery 数据表中显示以下 SQL 查询的结果。 It involves various left joins and some columns have null values.
它涉及各种左连接,并且某些列具有 null 值。 It would be great if someone could help me out on this.
如果有人可以帮助我解决这个问题,那就太好了。 There are 3 tables as below
有3个表如下
SELECT
Asset.Name AS Name,
Asset.Type AS Type,
Asset.Parent_Asset AS "Parent Asset",
Cat.Category AS Category,
Cat.Parent_Category AS "Parent Category",
T.BUSINESS_TERM AS "Business Term",
T.SHORT_DESCRIPTION AS Description
FROM
(SELECT
CH.DISPLAY AS Name,
CH.TYPE AS Type,
PA.DISPLAY AS Parent_Asset,
CH.CATEGORY_INT_ID
FROM
[Metadata].[dbo].[Asset] CH
LEFT JOIN
[Metadata].[dbo].[Asset] PA ON PA.PARENT_ASSET_ID = CH.ASSET_INT_ID) Asset
LEFT JOIN
(SELECT
CH.DISPLAY AS Category,
PA.DISPLAY AS Parent_Category,
CH.CATEGORY_INT_ID AS Category_Id
FROM
[METADATA].[dbo].[Category] CH
LEFT JOIN
[METADATA].[dbo].[Category] PA ON PA.PARENT_CATEGORY_ID = CH.CATEGORY_INT_ID) Cat ON Asset.CATEGORY_INT_ID = Cat.Category_Id
LEFT JOIN
[Metadata].[dbo].[Term] T ON T.CATEGORY_INT_ID = Cat.Category_Id
Create Stored Procedure in the database where the application is connected在应用程序连接的数据库中创建存储过程
CREATE PROCEDURE sp_GetAsset
AS
BEGIN
SELECT
Asset.Name AS Name,
Asset.Type AS Type,
Asset.Parent_Asset AS ParentAsset,
Cat.Category AS Category,
Cat.Parent_Category AS ParentCategory,
T.BUSINESS_TERM AS BusinessTerm,
T.SHORT_DESCRIPTION AS Description
FROM
(
SELECT
CH.DISPLAY AS Name,
CH.TYPE AS Type,
PA.DISPLAY AS Parent_Asset,
CH.CATEGORY_INT_ID
FROM
[Metadata].[dbo].[Asset] CH
LEFT JOIN
[Metadata].[dbo].[Asset] PA ON PA.PARENT_ASSET_ID = CH.ASSET_INT_ID) Asset
LEFT JOIN
(SELECT
CH.DISPLAY AS Category,
PA.DISPLAY AS Parent_Category,
CH.CATEGORY_INT_ID AS Category_Id
FROM
[METADATA].[dbo].[Category] CH
LEFT JOIN
[METADATA].[dbo].[Category] PA ON PA.PARENT_CATEGORY_ID = CH.CATEGORY_INT_ID) Cat ON Asset.CATEGORY_INT_ID = Cat.Category_Id
LEFT JOIN
[Metadata].[dbo].[Term] T ON T.CATEGORY_INT_ID = Cat.Category_Id
);
END
Create class to get data:创建 class 获取数据:
public class TestAsset
{
public string Name { get; set; }
public string Type { get; set; }
public string ParentAsset { get; set; }
public string Category { get; set; }
public string ParentCategory { get; set; }
public string BusinessTerm { get; set; }
public string Description { get; set; }
}
Get data in your Context在您的上下文中获取数据
public class YourContext : DbContext
{
public List<TestAsset> GetAssets()
{
return this.Query<TestAsset>.FromSql("Exec sp_GetAsset").ToList();
}
}
Use GetAssets Method使用 GetAssets 方法
using (YourContext context = new YourContext())
{
var list = context.GetAssets();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.