【发布时间】:2013-11-25 09:33:55
【问题描述】:
我有一个包含 MvcHtmlString 类型变量的页面类。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
using System.Globalization;
using SpringHealthOne.SpringWS;
using System.Configuration;
namespace SpringHealthOne.Models
{
public class Page
{
public int PageID { get; set; }
[Required]
public string Title { get; set; }
[Required]
public MvcHtmlString PageBody { get; set; }
public string MetaTitle { get; set; }
public string MetaDescription { get; set; }
public string Keywords { get; set; }
public bool Published { get; set; }
}
}
这本身很好,Visual Studios 2012 不会报告任何错误或警告。但是,当我尝试在调试模式下启动项目时,它会抛出:
在模型生成过程中检测到一个或多个验证错误:
\tSystem.Data.Entity.Edm.EdmEntityType: : EntityType 'MvcHtmlString' 没有定义键。定义此 EntityType 的键。 \tSystem.Data.Entity.Edm.EdmEntitySet:EntityType:EntitySet “MvcHtmlStrings”基于没有键的“MvcHtmlString”类型 已定义。
它在我的 MenuController 中的行:
IEnumerable<MenuItem> menuItems = db.MenuItems.Where(c => c.ParentID == null).OrderBy(c => c.DisplayOrder).Select(c => c);
我已经跟踪到调用 Page 类的数据库上下文,但我无法弄清楚为什么我会特别看到错误。
上下文:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration;
using System.ComponentModel.DataAnnotations.Schema;
using SpringHealthOne.App_Start;
using System.Web.Mvc;
namespace SpringHealthOne.Models
{
public class SpringerContext : DbContext
{
public DbSet<MenuItem> MenuItems { get; set; }
public DbSet<Page> Pages { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
Database.SetInitializer<SpringerContext>(new SpringerContextInitializer());
modelBuilder.Configurations.Add(new MenuItemConfiguration());
base.OnModelCreating(modelBuilder);
}
}
}
我对 C# 很陌生,对 MVC 更是如此。任何帮助都会很棒。
【问题讨论】:
标签: c# entity-framework asp.net-mvc-4