ASP.NET MVC 4 は初めてです。DATABASE FIRST APPROACH の使用。私の質問によると、SQL ストアド プロシージャを使用してデータを取得し、jQgrid に入力しています。ただし、Org テーブルからの OrgName を除くすべての BO テーブル データを取得しています (ストアド プロシージャを参照)。では、OrgName を取得するにはどうすればよいでしょうか???
私のストアドプロシージャは次のとおりです。
ALTER PROCEDURE [dbo].[GetBODetails]
AS
BEGIN
SELECT b.Id, b.OrgId, b.Code, b.Name, o.Name AS OrgName
FROM Org AS o INNER JOIN BO AS b ON o.Id = b.OrgId
END
Columns of BO table :
Id = GUID
Code = NVARCHAR(50)
Name = NVARCHAR(50)
OrgId = Foreign Key ref from Org table Id
Columns of BO table :
Id = GUID
Name = NVARCHAR(50)
モデルブラウザウィンドウから「関数インポートの追加」を実行して、この手順をMVCプロジェクトで使用しました;この記事を参照してここをクリックしてください。これを行っている間、[エンティティのコレクションを返す] を選択します。これは BO モデルです。
BO と Org で生成されたモデルは次のとおりです。
BO.cs
public partial class BO
{
public System.Guid Id { get; set; }
public string Code { get; set; }
public string Name { get; set; }
public System.Guid OrgId { get; set; }
public virtual Org Org { get; set; }
}
Org.cs
public partial class Org
{
public Org()
{
this.BOes = new HashSet<BO>();
}
public System.Guid Id { get; set; }
public string Name { get; set; }
public virtual ICollection<BO> BOes { get; set; }
}
Stored Procedure を実行するコントローラーのコード:
private iregEntities m_oDbCont = new iregEntities();
// GET: /BO/
public JsonResult BOGrid()
{
m_oDbCont.Configuration.ProxyCreationEnabled = false;
var BOList = m_oDbCont.GetBODetails().ToList(); // Executing stored procedure
var JsonBOList = new
{
rows = (
from BOData in BOList
select new
{
id = BOData.Id.ToString(),
cell = new string[] { BOData.OrgId.ToString(), BOData.Code, BOData.Name }
}).ToArray()
};
return Json(JsonBOList, JsonRequestBehavior.AllowGet); returning data into JSON format
}
protected override void Dispose(bool disposing)
{
m_oDbCont.Dispose();
base.Dispose(disposing);
}