私のViewModelを足場にしようとすると問題があります。まあ...最初のものが最初です。私は一覧/詳細は/ etcの.NETのテンプレートを使用して新しいビューを追加しようとするScaffoldingは私がそれを使用するたびに新しいDbSetを作成します
それはまさに起こる:私は私のビューを作成しようとすると、私は別の問題を抱えていた、それがこの問題でした。
このエラーが表示されてから、それを解決するまでに時間がかかりました。私が見つけた解決策の1つは、私のDbSetをIDBSetに変更することです。まあ...それはしばらくの間働いた。しかし...私は私のDbSetを変更した後、別の問題が現れました。今回は、テンプレートを使用しているScaffoldingごとに新しいDbSetが作成されます。
私はDDDの勉強をしていました... ...まあ、私のコードは、すぐ下には以下となります。
public class ProjetoDeEstudoContexto : DbContext
{
public ProjetoDeEstudoContexto()
: base("ProjetoDeEstudoContext")
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<ProjetoDeEstudoContexto, Configuration>());
}
public DbSet<Estagiario> Estagiarios { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();
modelBuilder.Properties<string>().Configure(p => p.HasColumnType("varchar"));
modelBuilder.Properties<string>().Configure(p => p.HasMaxLength(150));
//Configuration cria a tabela de acordo com os parametros da classe Config.
modelBuilder.Configurations.Add(new EstagiarioConfig());
}
}
public class EstagiarioConfig : EntityTypeConfiguration<Estagiario>
{
public EstagiarioConfig()
{
HasKey(e => e.EstagiarioId);
Property(n => n.Nome).IsRequired().HasMaxLength(150);
Property(n => n.Sobrenome).IsRequired().HasMaxLength(150);
}
}
public class Estagiario
{
public int EstagiarioId { get; set; }
public string Nome { get; set; }
public string Sobrenome { get; set; }
public DateTime? DataDeInicio { get; set; }
public DateTime? DataDeTermino { get; set; }
}
public class EstagiarioViewModel
{
[Key]
public int EstagiarioId { get; set; }
[Required(ErrorMessage = "Preencha o campo Nome")]
[MaxLength(150, ErrorMessage = "Máximo {0} caracteres")]
[MinLength(2, ErrorMessage = "Minimo {0} caracteres")]
public string Nome { get; set; }
[Required(ErrorMessage = "Preencha o campo Nome")]
[MaxLength(150, ErrorMessage = "Máximo {0} caracteres")]
[MinLength(2, ErrorMessage = "Minimo {0} caracteres")]
public string Sobrenome { get; set; }
[ScaffoldColumn(false)]
public DateTime? DataDeInicio { get; set; }
[ScaffoldColumn(false)]
public DateTime? DataDeTermino { get; set; }
}
マイAutoMapperクラスIは、この自動DbSetの作成を中止するにはどうすればよい
public static void RegisterMappings()
{
Mapper.Initialize(x =>
{
x.AddProfile<DomainToViewModelMappingProfile>();
x.AddProfile<ViewModelToDomainMappingProfile>();
});
}
public class DomainToViewModelMappingProfile : Profile
{
private MapperConfiguration mapConfig;
public override string ProfileName => "DomainToViewModelMapping";
protected override void Configure()
{
mapConfig = new MapperConfiguration(cfg =>
{
cfg.CreateMap<Estagiario, EstagiarioViewModel>();
});
}
}
public class ViewModelToDomainMappingProfile : Profile
{
private MapperConfiguration mapConfig;
public override string ProfileName => "ViewModelToDomainMapping";
protected override void Configure()
{
mapConfig = new MapperConfiguration(cfg =>
{
cfg.CreateMap<EstagiarioViewModel,Estagiario>();
});
}
}
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
AutoMapperConfig.RegisterMappings();
}
}
?私のコードで何が間違っていますか?
コンストラクタに 'Database.SetInitializer'は必要ありません。 'public DbSetを設定する Estagiarios {get;セット; } '' 'として公開仮想DbSet Estagiarios {get;セット; } ' –
あなたの提案をお試しいただきましたが、足場を使って新しいビューを作成しようとすると、私は同じ古い問題を抱えています。 :(http://imgur.com/a/Wlr8x –