ViewModel을 스캐 폴딩하려고 할 때 문제가 있습니다. 음 ... 처음부터. 나는이 목록/상세/기타의 닷넷 템플릿을 사용하여 새보기를 추가 할 때스캐 폴딩은 매번 사용할 새 DbSet을 만듭니다.
그것은 정확히 일 : 나는 내 견해를 만들려고 할 때 또 다른 문제가 있었다,이 문제였다.
음,이 오류가 나타나면 해결을 위해 시간이 걸렸습니다. 내가 찾은 솔루션 중 하나는 IDbet으로 내 DbSet을 변경하는 것입니다. 그게 ... 잠시 동안 일 했어. 하지만 ... 내 DbSet을 변경 한 후에 다른 문제가 나타났습니다. 이번에는 템플릿을 사용하는 각 스캐 폴딩에 대해 새로운 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; 세트; }'''public 가상 DbSet Estagiarios {get; 세트; } ' –
글쎄, 나는 당신의 제안을 tryied했지만 여전히 Scaffolding을 사용하여 새로운 View를 만들려고 할 때 나는 똑같은 문제를 겪고있다. :(http://imgur.com/a/Wlr8x –