Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Visual Studio在尝试构建viewmodel时出现错误_C#_Entity Framework_Visual Studio_Mvvm_Asp.net Mvc Scaffolding - Fatal编程技术网

C# Visual Studio在尝试构建viewmodel时出现错误

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;}

我试图将viewmodel作为模型类添加到我的MVC项目中,但当我添加视图时,会弹出一个带有以下错误的窗口:

“错误

运行所选代码生成器时出错:“A” “Blog.Domain.Entities.Post”类型的配置已完成 添加。要引用现有配置,请使用实体()或 ComplexType()方法。“”

当我使用实际实体(Blog.Domain.Entities.Post)时,它不会抛出错误

视图模型:(但与任何视图模型相同)

公共类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。