gpt4 book ai didi

c# - EntityType 'MvcHtmlString' 没有定义键 - MVC 4

转载 作者:太空宇宙 更新时间:2023-11-03 21:39:15 24 4
gpt4 key购买 nike

我有一个包含 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 没有报告任何错误或警告。但是,当我尝试以 Debug模式启动项目时,它会抛出:

One or more validation errors were detected during model generation:

\tSystem.Data.Entity.Edm.EdmEntityType: : EntityType 'MvcHtmlString' has no key defined. Define the key for this EntityType. \tSystem.Data.Entity.Edm.EdmEntitySet: EntityType: EntitySet 'MvcHtmlStrings' is based on type 'MvcHtmlString' that has no keys defined.

显示它的行在我的 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 更是如此。任何帮助都会很棒。

最佳答案

MvcHtmlString 不是原始类型,所以不能直接保存到数据库的字段中。并且实体类型需要 ID 属性(否则您将无法在数据库中设置外键)。如果您想将 Page 对象存储在数据库中,请使用简单的 string 而不是 MvcHtmlString

您还可以将此属性标记为未映射并创建将保存到数据库的字符串属性:

[NotMapped]
public MvcHtmlString PageBody { get; set; }

public string Body
{
get { return PageBody.ToHtmlString(); }
set { PageBody = new MvcHtmlString(value); }
}

关于c# - EntityType 'MvcHtmlString' 没有定义键 - MVC 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20188648/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com