Hatası ne zaman alıyorsunuz? AssertConfigurationIsValid
'u aradığınızda mı?
public class Foo1
{
public string Field1 { get; set; }
}
public class Foo2
{
public string Field1 { get; set; }
public string Field2 { get; set; }
}
Mapper.CreateMap<Foo1, Foo2>();
var foo1 = new Foo1() {Field1 = "field1"};
var foo2 = new Foo2();
Mapper.Map(foo1, foo2);//maps correctly, no Exception
diğer için AssertConfigurationIsValid
çağırmak isteyebilirsiniz:
evet, o zaman basitçe
bu yöntemi çağırmak yok bu yöntem çağırmak yok, işleri aşağıdaki eşleştirmeyi göz önünde eşlemeleri doğru olduklarından emin olmak yerine, yapmanız gerekenler eşlemelerinizi şu Profillere düzenlemektir:
public class MyMappedClassesProfile: Profile
{
protected override void Configure()
{
CreateMap<Foo1, Foo2>();
//nb, make sure you call this.CreateMap and NOT Mapper.CreateMap
//I made this mistake when migrating 'static' mappings to a Profile.
}
}
Mapper.AddProfile<MyMappedClassesProfile>();
ve size (senin durumundaki vaka bazında durumda) haritalama geçerliliğini kontrol karar verirseniz daha sonra
Mapper.AssertConfigurationIsValid(typeof(MyMappedClassesProfile).FullName);
önemli sizin durumunuzda ve/veya herhangi davayı sen do not callAssertConfigurationIsValid
numaralı telefonu arayın, eşleştirmenin çalıştığından emin olmak için AutoFixture ve Unit Unit gibi bir şey kullanmalısınız. (Bu, AssertConfigurationIsValid
'un amacıdır)
AssertConfigurationIsValid öğesini aradığımda, ancak birim sınamada kalmasını istedim. Şu anda Global.asax içinde ama sonunda birim testinde hareket edecek (Bu bir ASP.NET MVC uygulaması). Öyleyse temelde, AssertConfigurationIsValid'i kullanmaktan kaçınmam ve DAL'im için kendi birim testimi yazmam gerektiğini söylüyorsun? – Pluc
Bunu, her bir * durumda, haritalamanın basit olduğu yerlerde yapmasını istemiyorum, o zaman AssertConfigurationIsValid'i kullanmaya devam edin. Sorunlu hale geldiği yerlerde daha iyi bildiğiniz için kullanmayın. Ancak, eşlemelerinizi Profiller ("AutoMapper.Profile" uzantısını genişleten sınıflar) halinde düzenlemelisiniz; çünkü bu sıralama eşleme yapılandırmasının durağan yapısını ve daha sonra her Mapper.Map bildirimi için geçerli olacak olan AssertConfigurationIsValid "çağrısını azaltır. ve yapılmış. – wal
Her varlık eksik özelliklere sahip olacaktır, çünkü EF POCO'ları DTO'lara eşleştiriyorum. DTO'lar hiçbir zaman diğer DTO'ları içermeyecekler, daha ziyade ID'leri (bir-bir/bir çok ilişki) saklayacaklar ya da requried varlıktan sorumlu olan ilgili depoyu arayacaklar (ID'si bir parametre olarak).Bazıları sadece tek bir kayıp mülktür, ancak hepsinin en az bir tane vardır. Profilleri kullanmanın, web sunucusu başladığında eşlemelerin yalnızca bir kez (bir web uygulaması olduğundan) yapılandırıldığı için beni çok fazla getireceğinden emin değilim. Ben de sadece Model => DTO için AutoMapper kullanıyorum. ViewModels için kullanmaya başlamadığım sürece, ihtiyacı görmüyorum. – Pluc