簡體   English   中英

與Code First MVC 4 EF4.1左連接

[英]Left join with Code First MVC 4 EF4.1

我正在創建一個系統,用戶可以在其中進行一些設置以完成其帳戶,請參見下文:

表格:

設置類型

  1. ID
  2. 名稱

設定值

  1. ID
  2. FkSettingTypeId
  3. IsEmailActivated
  4. IsSMSActivated
  5. 間隔通知

因此,SettingsType表具有以下類型的值:

  1. 如果時間快要結束了
  2. 在我的類別中被警告
  3. ...

回到我的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>}

我嘗試了很多類似這些鏈接的事情:

  1. 實體框架代碼第一個左連接
  2. 流利的API樣本

但是我無法實現我的期望。

總而言之,我還使用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;
    }

還檢查此答案Join and Include in Entity Framework

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM