Kiedy otrzymujesz błąd? Czy to podczas dzwonienia pod numer AssertConfigurationIsValid
?
Jeśli tak, to prostu nie nazywają to metoda
Nie musisz wywołać tę metodę, należy rozważyć następujące odwzorowanie który działa:
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
Możesz zadzwonić AssertConfigurationIsValid
dla drugiej mapowania, aby upewnić się, że są poprawne, a zamiast tego należy uporządkować swoje odwzorowania w profile:
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>();
a następnie, jeśli zdecydujesz, że chcesz sprawdzić poprawność odwzorowania (indywidualnie dla każdego przypadku w danej sytuacji), a następnie zadzwonić
Mapper.AssertConfigurationIsValid(typeof(MyMappedClassesProfile).FullName);
ważną w Twoim przypadku i/lub każdy przypadek, w którym dont zadzwoń pod numer AssertConfigurationIsValid
powinieneś użyć czegoś takiego jak AutoFixture i testu jednostki, aby upewnić się, że twoje mapowanie działa. (który jest celem: AssertConfigurationIsValid
)
To jest, gdy nazywam AssertConfigurationIsValid, ale chciałbym to zrobić, aby zachować to w moich testach jednostkowych. W tej chwili jest w Global.asax, ale ostatecznie przejdzie w testowaniu jednostkowym (to aplikacja ASP.NET MVC). Więc zasadniczo mówisz mi, że powinienem unikać używania AssertConfigurationIsValid i napisać własne testy jednostkowe dla mojego DAL? – Pluc
Nie mówię, żebyś to robił w * każdym * przypadku ... w miejscach, w których mapowanie jest proste, nadal używaj AssertConfigurationIsValid. W miejscach, w których staje się problematyczne, ponieważ wiesz lepiej, nie używaj go. Powinieneś jednak uporządkować swoje odwzorowania na Profile (klasy rozszerzające 'AutoMapper.Profile'), ponieważ ten rodzaj-redukuje statyczną naturę konfiguracji odwzorowań i wywołanie do' AssertConfigurationIsValid ', które następnie miałyby zastosowanie do każdej deklaracji Mapper.Map, że" zrobione. – wal
Każda jednostka będzie mieć brakujące właściwości, ponieważ odwzorowuję EF POCO na DTO. DTO nigdy nie będą zawierać innych DTO, ale raczej zachowają identyfikatory (relacje jeden-jeden/jeden-wiele) lub wywołają odpowiednie repozytorium odpowiedzialne za żądaną jednostkę (z jego identyfikatorem jako parametrem).Niektóre są tylko jedną brakującą własnością, ale wszystkie mają co najmniej jedną. Nie jestem pewien, czy użycie Profili przyniesie mi wiele, ponieważ odwzorowania są skonfigurowane tylko raz (ponieważ jest to aplikacja internetowa) po uruchomieniu serwera WWW. Używam również AutoMappera dla Model => DTO. O ile nie zacznę używać go do ViewModels, nie widzę potrzeby. – Pluc