[英]Left join with Code First MVC 4 EF4.1
我正在創建一個系統,用戶可以在其中進行一些設置以完成其帳戶,請參見下文:
表格:
因此,SettingsType表具有以下類型的值:
回到我的MVC4應用程序中,我需要創建一個控制器,該控制器將返回具有Setting的每個SettingsType以獲得html表,用戶可以在其中選擇是否要接收每個SettingsType的電子郵件和短信。
我將Entity Framework 4.1與CodeFirst一起使用,普通頁面將返回表對象,如下所示:
public ActionResult Index()
{
var settings = db.Settings.Include(s => s.SettingsType);
return View(settings.ToList());
}
包含語句進行內部聯接,並且不返回我需要與設置關聯的所有SettingsType。
我該如何編寫代碼以進行左右連接,並獲得正確的模型以傳遞到我的視圖中,如下所示:
@model IEnumerable<TenderSystem.Models.Setting>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.SettingsType.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.IsEmailActivated)
</td>
<td>
@Html.DisplayFor(modelItem => item.IsSMSActivated)
</td>
<td>
@Html.DisplayFor(modelItem => item.IntervalNotification)
</td>
</tr>}
我嘗試了很多類似這些鏈接的事情:
但是我無法實現我的期望。
總而言之,我還使用SQL到LINQ的轉換工具,將我非常簡單的SQL左聯接轉換為LINQ,並且可能會返回我可以使用的對象到視圖中,但出現此錯誤:LINQ僅支持無參數構造函數和初始化程序實體。
需要您的幫助以了解與此情況相關的正確方法。
非常感謝你
我認為Include可以只是孩子的模型名稱,是其中一個構造函數下的字符串。 這是EF5的鏈接。
http://msdn.microsoft.com/query/dev11.query?appId=Dev11IDEF1&l=EN-US&k=k (“ System.Data.Entity.Infrastructure.DbQuery`1.Include”); k(Include); k( TargetFrameworkMoniker-.NETFramework,Version%3Dv4.5); k(DevLang-csharp)&rd = true
或縮短... http://bit.ly/SOEttF
我正在使用WebAPI,所以返回值需要一個IQueryable,這對我有用。
[AcceptVerbs("GET")]
public IQueryable<Run> Runs()
{
var rx = _contextProvider.Context.Runs
.Include("RunOutlineItems")
.AsQueryable()
.Where(r => r.RunStatusId < 4);
return rx;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.