Проблемы с подкладками ASP.NET при попытке добавить файл сопоставления
В частности, я пытаюсь использовать подсистемы WebAPI-контроллеров, используя подмостки Microsoft, WebAPI 2.1, MVC 5.1.1 и Visual Studio 2013 Update 2 RC. Я заметил, что когда я пытаюсь добавить файл сопоставления, как показано ниже, в контекст, я получаю сообщения об ошибках только, когда выполняется эшафот. Я пробовал все, что мог, но я все равно получаю сообщения при добавлении строки следующим образом:
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
Ничто здесь не помогает. Я несколько раз заново установил строительные леса. Проблема исчезнет, если я не добавлю файл сопоставления и вернусь, если я добавлю его снова. Когда я просто использую свой контекст, нормально все нормально.
Здесь код, который я использую для контекста
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");
}
}
}
Ответы
Ответ 1
У меня была аналогичная проблема.
Проблема в моем случае состояла в том, что у меня была строка подключения, сохраненная в другом файле, отличная от классического файла web.config, чтобы избежать ее сохранения в моем репозитории Git.
Что-то вроде:
<connectionStrings configSource="cstring.config"/>
Несмотря на то, что он был правильно настроен в другом файле, похоже, что эшафот не решает преобразования.
В итоге он просто не находит базу данных.
Итак, мое решение:
- скопируйте строку подключения к базе данных в web.config
- строительные леса
- вернуться в предыдущее состояние.
Надеюсь, что это поможет
Ответ 2
У меня была такая же проблема раньше, я использую шаблон Repository с Unit of Work, и я изменил шаблон Code First Reverse Engineering, чтобы добавить метаданные в мои объекты.
Когда я думал о том, чтобы отменить много чего, я вспомнил, что использовал .Net Framework 4.5.1!
После изменения целевой .Net framework, в свойствах проекта, до 4.5 проблема исчезла!
Я изменил его во всех проектах.
Ответ 3
Для меня я должен был обеспечить <configSettings>
, <appSettings>
и <connectionStrings>
теги НЕ с помощью атрибута configSource
.
Ответ 4
Я столкнулся с аналогичной проблемой, следуя этому учебнику.
Решением было положить тег connectionString
после configSections
в web.config. Тогда это сработало!