当我尝试添加映射文件时,ASP.NET脚手架的问题

前端之家收集整理的这篇文章主要介绍了当我尝试添加映射文件时,ASP.NET脚手架的问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
具体来说,我正在使用Microsoft脚手架,WebAPI 2.1,MVC 5.1.1和Visual Studio 2013 Update 2 RC来构建WebAPI控制器.我注意到,当我尝试在上下文中添加如下所示的映射文件时,只有在脚手架运行时才会收到错误消息.我已经尝试了我能想到的一切,但是当添加如下行时,我仍然会收到消息:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Configurations.Add(new AnswerMap());

在脚手架花费了10秒以上的时间后,在对话框中给出以下错误消息:

Error
    There was an error running the selected code generator: 
    'Exception has been thrown by the target of an invocation'

检查在网络上的原因我看到许多不同的解决方案,但没有帮助我.大多数解决这个错误解决方案似乎涉及到,退出,重新开始,重建或事物的组合.有些用户似乎无法解决问题.如果我无法找到有关错误的更多信息,那真的很困难.

希望有人可以指向我可以找到日志文件的地方,或者给我一些关于如何解决这个问题的建议.

请注意我已经审查过:

Visual Studio 2013 Scaffolding Error

这里没有什么帮助.我重新安装了脚手架几次.如果我不添加映射文件,并且如果我再次添加,那么问题就会消失.当我只是使用我的上下文通常一切都可以.

这是我用于上下文的代码

using Data.Mapping.Enum;
using Entities.Models.Enum;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Diagnostics;
using System.Data.Entity.ModelConfiguration.Conventions;
using System.Linq;
using System.Web;
using Entities.Models.Core;
using System.Data.Entity.ModelConfiguration;
using System.ComponentModel.DataAnnotations.Schema;

namespace WebRole1.Models
{ 
    public partial class testCertContext1 : DbContext
    {
        public testCertContext1()
            : base("name=testCertContext1")
        {
        }
        public DbSet<Answer> Answers { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
            modelBuilder.Configurations.Add(new AnswerMap2());
        }
    }

    public class AnswerMap2 : EntityTypeConfiguration<Answer>
    {
        public AnswerMap2()
        {
            // Primary Key
            this.HasKey(t => t.AnswerId);

            // Identity
            this.Property(t => t.AnswerId)
                .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

            // Table & Column Mappings
            this.ToTable("Answer");
            this.Property(t => t.AnswerId).HasColumnName("AnswerId");
            this.Property(t => t.Text).HasColumnName("Text");

        }
    }
}

解决方法

我也有类似的问题.
在我的情况下的问题是,我将连接字符串保存在另一个文件中,与传统的web.config文件不同,以避免将其保存在我的Git存储库中.就像是:
<connectionStrings configSource="cstring.config"/>

即使在其他文件中配置正确,看起来脚手架也不能解决转换问题.
最后他只是找不到数据库.
所以,我的解决方法是:
– 在web.config中复制数据库连接字符串
– 脚手架
– 返回上一个状态.

希望可以帮助

猜你在找的asp.Net相关文章