我有一个表ECmain与其他2个表,Notes和Email有关系 .
我想访问视图中的数据,以便为ECmain中的每条记录显示一个脚趾列表并且可以编辑 .
这是我的模特
namespace EditSuite.Models
{
public class ECmain
{
public ECmain()
{
this.Notes = new Collection<Notes>();
}
public int ID { get; set; }
public string Auth { get; set; }
public string KeyWords { get; set; }
public string Description { get; set; }
public string URL { get; set; }
public string Category { get; set; }
public string SubCategory { get; set; }
public string Title { get; set; }
public string Live { get; set; }
public virtual ICollection<Notes> Notes { get; set; }
public virtual ICollection<Email> Email { get; set; }
public List<Notes> NoteList { get; set; }
}
public class Email
{
public int ID { get; set; }
public int ECmainID { get; set; }
public string EmailText { get; set; }
public virtual ECmain ECmain { get; set; }
}
public class Notes
{
public int ID { get; set; }
public int ECmainID { get; set; }
public string NotesText { get; set; }
public virtual ECmain Ecmain { get; set; }
}
DB上下文
namespace EditSuite.DAL
{
public class ECContext : DbContext
{
public ECContext()
: base("name=ECmodelConnection")
{
}
public virtual DbSet<ECmain> ECmain { get; set; }
public virtual DbSet<Email> Email { get; set; }
public virtual DbSet<Notes> Notes { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
}
调节器
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using EditSuite.DAL;
using EditSuite.Models;
namespace EditSuite.Controllers
{
public class ECmainsController : Controller
{
private ECContext db = new ECContext();
// GET: ECmain
public ActionResult Index()
{
//var church = from m in db.ECmain.Take(10)
// where m.Live == "Y" && m.Auth == "Yes"
// select m;
//church = church.OrderBy(m => m.Category);
return View(db.ECmain.Take(10));
}
视图
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Notes)
</td>
<td>
@Html.DisplayFor(modelItem => item.KeyWords)
</td>
<td>
@Html.DisplayFor(modelItem => item.Description)
</td>
<td>
@Html.DisplayFor(modelItem => item.URL)
</td>
<td>
@Html.DisplayFor(modelItem => item.Category)
</td>
<td>
@Html.DisplayFor(modelItem => item.SubCategory)
</td>
<td>
@Html.DisplayFor(modelItem => item.Title)
</td>
<td>
@Html.DisplayFor(modelItem => item.Live)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
@Html.ActionLink("Details", "Details", new { id=item.ID }) |
@Html.ActionLink("Delete", "Delete", new { id=item.ID })
</td>
</tr>
}
结果是'/'应用程序中的服务器错误 .
列名称“ECmain_ID1”无效 . 列名称“ECmain_ID1”无效 . 列名称“ECmain_ID”无效 . 列名称“ECmain_ID1”无效 .
描述:执行当前Web请求期间发生未处理的异常 . 请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息 .
异常详细信息:System.Data.SqlClient.SqlException:无效的列名称“ECmain_ID1” . 列名称“ECmain_ID1”无效 . 列名称“ECmain_ID”无效 . 列名称“ECmain_ID1”无效
我试过@ Html.DisplayFor(modelItem => item.NoteList)但是没有返回任何内容
1 回答
这听起来很像这个问题:ASP.NET MVC /Entity Framework Error - Invalid column name 'Environment_Id'
答案可能对您有所帮助 .
格里
3 rd Party Edit
对我来说,Gerry所关联的答案可能对您的问题有用 . 我没有使用EF和MVC,但基于你的异常
System.Data.SqlClient.SqlException: Invalid column name 'ECmain_ID1'
或'ECmain_ID'
我假设entity-framework创建的sql语句与数据库中的列不匹配
或者sql-result中的表列与email-object的属性之间的匹配失败