C# Visual Studio在尝试构建viewmodel时出现错误
我试图将viewmodel作为模型类添加到我的MVC项目中,但当我添加视图时,会弹出一个带有以下错误的窗口: “错误 运行所选代码生成器时出错:“A” “Blog.Domain.Entities.Post”类型的配置已完成 添加。要引用现有配置,请使用实体()或 ComplexType()方法。“” 当我使用实际实体(Blog.Domain.Entities.Post)时,它不会抛出错误 视图模型:(但与任何视图模型相同)C# Visual Studio在尝试构建viewmodel时出现错误,c#,entity-framework,visual-studio,mvvm,asp.net-mvc-scaffolding,C#,Entity Framework,Visual Studio,Mvvm,Asp.net Mvc Scaffolding,我试图将viewmodel作为模型类添加到我的MVC项目中,但当我添加视图时,会弹出一个带有以下错误的窗口: “错误 运行所选代码生成器时出错:“A” “Blog.Domain.Entities.Post”类型的配置已完成 添加。要引用现有配置,请使用实体()或 ComplexType()方法。“” 当我使用实际实体(Blog.Domain.Entities.Post)时,它不会抛出错误 视图模型:(但与任何视图模型相同) 公共类PostViewModel { 公共字符串标题{get;set;}
公共类PostViewModel
{
公共字符串标题{get;set;}
公共字符串说明{get;set;}
公共字符串UrlSlug{get;set;}
public DateTime PostedOn{get;set;}
公共类别{get;set;}
公共ICollection标记{get;set;}
}
发布实体:
public class Post : IEntity
{
public int Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string Meta { get; set; }
public string UrlSlug { get; set; }
public bool Published { get; set; }
public DateTime PostedOn { get; set; }
public DateTime? Modified { get; set; }
public virtual Category Category { get; set; }
public virtual ICollection<Tag> Tags { get; set; }
}
public class BlogDbContext : DbContext
{
public BlogDbContext() : base("Name=BlogDbContext")
{
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<BlogDbContext>());
}
public DbSet<Post> Posts { get; set; }
public DbSet<Category> Categories { get; set; }
public DbSet<Tag> Tags { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Configurations.Add(new PostMap());
modelBuilder.Configurations.Add(new CategoryMap());
modelBuilder.Configurations.Add(new TagMap());
}
}
public class PostMap : EntityTypeConfiguration<Post>
{
public PostMap()
{
HasKey(m => m.Id);
Property(m => m.Title)
.HasMaxLength(256)
.IsRequired();
Property(m => m.Description)
.HasMaxLength(5000)
.IsRequired();
Property(m => m.Meta)
.HasMaxLength(1024)
.IsRequired();
Property(m => m.UrlSlug)
.HasMaxLength(256)
.IsRequired();
Property(m => m.Published)
.IsRequired();
Property(m => m.PostedOn)
.IsRequired();
Property(m => m.Modified)
.IsOptional();
HasRequired(m => m.Category)
.WithMany(c => c.Posts);
HasMany(m => m.Tags)
.WithMany(t => t.Posts)
.Map(mc =>
{
mc.ToTable("PostTagMap");
mc.MapLeftKey("PostId");
mc.MapRightKey("TagId");
});
}
}
公共类职位:IEntity
{
公共int Id{get;set;}
公共字符串标题{get;set;}
公共字符串说明{get;set;}
公共字符串元{get;set;}
公共字符串UrlSlug{get;set;}
公共bool已发布{get;set;}
public DateTime PostedOn{get;set;}
公共日期时间?已修改{get;set;}
公共虚拟类别{get;set;}
公共虚拟ICollection标记{get;set;}
}
我的自定义数据库上下文:
public class Post : IEntity
{
public int Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string Meta { get; set; }
public string UrlSlug { get; set; }
public bool Published { get; set; }
public DateTime PostedOn { get; set; }
public DateTime? Modified { get; set; }
public virtual Category Category { get; set; }
public virtual ICollection<Tag> Tags { get; set; }
}
public class BlogDbContext : DbContext
{
public BlogDbContext() : base("Name=BlogDbContext")
{
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<BlogDbContext>());
}
public DbSet<Post> Posts { get; set; }
public DbSet<Category> Categories { get; set; }
public DbSet<Tag> Tags { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Configurations.Add(new PostMap());
modelBuilder.Configurations.Add(new CategoryMap());
modelBuilder.Configurations.Add(new TagMap());
}
}
public class PostMap : EntityTypeConfiguration<Post>
{
public PostMap()
{
HasKey(m => m.Id);
Property(m => m.Title)
.HasMaxLength(256)
.IsRequired();
Property(m => m.Description)
.HasMaxLength(5000)
.IsRequired();
Property(m => m.Meta)
.HasMaxLength(1024)
.IsRequired();
Property(m => m.UrlSlug)
.HasMaxLength(256)
.IsRequired();
Property(m => m.Published)
.IsRequired();
Property(m => m.PostedOn)
.IsRequired();
Property(m => m.Modified)
.IsOptional();
HasRequired(m => m.Category)
.WithMany(c => c.Posts);
HasMany(m => m.Tags)
.WithMany(t => t.Posts)
.Map(mc =>
{
mc.ToTable("PostTagMap");
mc.MapLeftKey("PostId");
mc.MapRightKey("TagId");
});
}
}
公共类BlogDbContext:DbContext
{
public BlogDbContext():base(“Name=BlogDbContext”)
{
SetInitializer(新的DropCreateDatabaseIfModelChanges());
}
公共DbSet Posts{get;set;}
公共数据库集类别{get;set;}
公共DbSet标记{get;set;}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
基于模型创建(modelBuilder);
modelBuilder.Configurations.Add(newpostmap());
添加(新的CategoryMap());
添加(新标记映射());
}
}
Post实体的EF映射:
public class Post : IEntity
{
public int Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string Meta { get; set; }
public string UrlSlug { get; set; }
public bool Published { get; set; }
public DateTime PostedOn { get; set; }
public DateTime? Modified { get; set; }
public virtual Category Category { get; set; }
public virtual ICollection<Tag> Tags { get; set; }
}
public class BlogDbContext : DbContext
{
public BlogDbContext() : base("Name=BlogDbContext")
{
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<BlogDbContext>());
}
public DbSet<Post> Posts { get; set; }
public DbSet<Category> Categories { get; set; }
public DbSet<Tag> Tags { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Configurations.Add(new PostMap());
modelBuilder.Configurations.Add(new CategoryMap());
modelBuilder.Configurations.Add(new TagMap());
}
}
public class PostMap : EntityTypeConfiguration<Post>
{
public PostMap()
{
HasKey(m => m.Id);
Property(m => m.Title)
.HasMaxLength(256)
.IsRequired();
Property(m => m.Description)
.HasMaxLength(5000)
.IsRequired();
Property(m => m.Meta)
.HasMaxLength(1024)
.IsRequired();
Property(m => m.UrlSlug)
.HasMaxLength(256)
.IsRequired();
Property(m => m.Published)
.IsRequired();
Property(m => m.PostedOn)
.IsRequired();
Property(m => m.Modified)
.IsOptional();
HasRequired(m => m.Category)
.WithMany(c => c.Posts);
HasMany(m => m.Tags)
.WithMany(t => t.Posts)
.Map(mc =>
{
mc.ToTable("PostTagMap");
mc.MapLeftKey("PostId");
mc.MapRightKey("TagId");
});
}
}
公共类邮戳:EntityTypeConfiguration
{
公共邮戳(
{
HasKey(m=>m.Id);
属性(m=>m.Title)
.HasMaxLength(256)
.IsRequired();
属性(m=>m.Description)
.HasMaxLength(5000)
.IsRequired();
属性(m=>m.Meta)
.HasMaxLength(1024)
.IsRequired();
属性(m=>m.urlslag)
.HasMaxLength(256)
.IsRequired();
属性(m=>m.Published)
.IsRequired();
属性(m=>m.PostedOn)
.IsRequired();
属性(m=>m.Modified)
.等民族();
HasRequired(m=>m.Category)
.有许多(c=>c职位);
HasMany(m=>m.Tags)
.有许多(t=>t个职位)
.Map(mc=>
{
mc.ToTable(“后期地图”);
麦克·马普夫特基(“职位”);
mc.MapRightKey(“TagId”);
});
}
}
我不明白为什么它会给我这个错误,viewmodel应该与EF无关。你好 不知道(EF,yech),但创建一个替代模型的虚拟机没有什么意义。您应该能够通过ViewModel上的集合或属性直接公开您的帖子。实际上,这很有意义。不管怎样,这不是问题所在,无论哪种方式都不行。在添加ViewModel并尝试创建视图后,我遇到了相同的错误。然后我取消了,调试/构建,并在成功启动后立即快速调试。第二次,我没有选择一个“数据上下文类”(不确定这是否重要),它起了作用。YMMV。