i m在现有的MVC项目上工作。从dbcontext继承的上下文类都很好,但是当我将其更改为IdentityDbContext时,我会遇到该错误。该行中的错误发生:var makaleler = context.makale.tolist();
我的控制器:
using mvcblogdeneme.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace mvcblogdeneme.Controllers
{
public class HomeController : Controller
{
// GET: Home
BlogDatabaseContext context = new BlogDatabaseContext();
public ActionResult Index()
{
return View();
}
public ActionResult CategoryWidgetGetir()
{
var kat = context.Kategori.ToList();
return View(kat);
}
public ActionResult TumMakalelerGetir()
{
var makaleler = context.Makale.ToList();
return View("MakaleListele", makaleler);//makalelistele bi partial view
}
}
}
这是我的模型:
namespace mvcblogdeneme.Models
{
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.Spatial;
[Table("Makale")]
public partial class Makale
{
public int Id { get; set; }
[Required]
[StringLength(150)]
public string Baslik { get; set; }
[Required]
public string Icerik { get; set; }
public DateTime YayimTarihi { get; set; }
public int KategoriID { get; set; }
public virtual Kategori Kategori { get; set; }
}
}
如果例外消息显示这样的例外消息,并且正在使用DbContext
:
entityType'[[表名称]]'没有定义键。定义关键 这个实体类型。
entityType:entitySet'[[entity name]]'是基于类型'[[table name]]'' 没有定义键。
那么,绝对需要在 Id
属性上使用 KeyAttribute
将其标记为表模型类中的主要键字段,并且问题将解决:
[Table("Makale")]
public partial class Makale
{
// if the ID also set as auto-increment, uncomment DatabaseGenerated attribute given below
// [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
public int Id { get; set; }
[Required]
[StringLength(150)]
public string Baslik { get; set; }
[Required]
public string Icerik { get; set; }
public DateTime YayimTarihi { get; set; }
public int KategoriID { get; set; }
public virtual Kategori Kategori { get; set; }
}
但是,如果发现原因是IdentityDbContext
和EF代码首先使用的原因,则需要执行这些步骤(以 dotnethaggis 来信):
IdentityUserLogin
&创建配置类IdentityUserRole
:// taken from /a/20912641 public class IdentityUserLoginConfiguration : EntityTypeConfiguration<IdentityUserLogin> { public IdentityUserLoginConfiguration() { HasKey(iul => iul.UserId); } } public class IdentityUserRoleConfiguration : EntityTypeConfiguration<IdentityUserRole> { public IdentityUserRoleConfiguration() { HasKey(iur => iur.RoleId); } }
在
OnModelCreating
方法中添加上面的这两个配置:protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Configurations.Add(new IdentityUserLoginConfiguration()); modelBuilder.Configurations.Add(new IdentityUserRoleConfiguration()); }
此时,由于设置了每个身份表的主要键,因此应解决错误。
类似问题:
类型'system.data.entity.modelconfiguration.modelvalidation exception'的例外发生在EntityFrameWork.dll
中将mydbContext与IdentityDbContext