【发布时间】:2012-07-07 18:07:27
【问题描述】:
我正在创建一个系统,用户可以在其中完成一些设置来完成他们的帐户,见下文:
表格:
设置类型
- 身份证
- 姓名
设置
- 身份证
- FkSettingTypeId
- IsEmailActivated
- IsSMS已激活
- 间隔通知
所以 SettingsType 表有这些值:
- 时间快结束时发出警告
- 收到有关我的类别中的优惠的警告
- ...
回到我的 MVC4 应用程序,我需要创建一个控制器,该控制器将返回带有设置的每个 SettingsType 以获取一个 html 表,用户可以在其中选择是否要接收每个 SettingsType 的电子邮件和短信。
我使用带有 CodeFirst 的 Entity Framework 4.1,一个普通的页面会返回这样的表对象:
public ActionResult Index()
{
var settings = db.Settings.Include(s => s.SettingsType);
return View(settings.ToList());
}
include 语句进行内部连接,并且不返回我需要与设置关联的所有 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 to Entity 中。
需要您的帮助来了解如何处理这种情况。
非常感谢
【问题讨论】:
标签: asp.net-mvc razor ef-code-first left-join