ValueInjecter을 사용하여 도메인 모델의 속성을 서비스 레이어를 통해 제공되는 DTO에 매핑합니다. 문제의 서비스는 또한 업데이트를 받아들입니다 ... 그래서 업데이트 된 DTO가 전달되고 이것은 도메인 객체에 주입되어 저장됩니다.값 인젝터 : Dto to Domain Model (NHibernate)
// Domain
public class Member
{
public Country Country { get; set; }
}
public class Country
{
public string Code { get; set; }
public string Name { get; set; }
}
//Dto
public class MemberDto
{
public string CountryCode { get; set; }
}
//Transformation Method attempt 1
public Member InjectFromDto (MemberDto dto, Member source)
{
source = source.InjectFrom<UnflatLoopValueInjection>(dto);
return source;
}
지금이 위의 코드가하는 모든이는 내가하는 데 필요한 분명하지 않은 속성 Member.Country.Code를 업데이트합니다.
그래서 워드 프로세서에서, 내가 재정의를 만드는 데 필요한 생각이 있어요 :public class CountryLookup: UnflatLoopValueInjection<string, Country>
{
protected override Country SetValue(string sourcePropertyValue)
{
return countryService.LookupCode(sourcePropertyValue);
}
}
//revised transformation call
//Transformation Method attempt 2
public Member InjectFromDto (MemberDto dto, Member source)
{
source = source.InjectFrom<UnflatLoopValueInjection>(dto)
.InjectFrom<CountryLookup>(dto);
return source;
}
내 문제가 디버깅 중입니다, CountryLookup가 호출되지 없구요. 국가 유형과 일치하지에 injecter 값을 일으키는
- NHibernate에 프록시 클래스 : 내가 생각할 수있는
가능한 이유? 그것이 평평하게하는 동안 작동하기 때문에 이것은 의미가 없습니다.
- 아마도 어떤 이유로 인해 비평 탄화가 발생하지 않을 수 있습니다. 즉 DTO는 COUNTRYCODE하고 도메인 나는 업데이트 주입시 사용하는 올바른 개체를 반환하는 countryService.LookupCode를 호출 할 DTO에 COUNTRYCODE 속성을 사용할 필요가 Country.Code
입니다.
달성하려는 목표는 무엇입니까? 첫 번째 시도는 효과가 있지만 필요한 것은 아닙니다. 무엇이 필요합니까? – Omu
CountryLookup이라는 이름의 주입이 문자열에서 Country로 unflat됩니다. 즉, string 유형의 CountryCode에서 값을 가져 와서 국가 – Omu
Country.Code에 넣습니다. @Omu thats correct Country Country : Country : USA, Name : United States} 그리고 내 Dto는 CountryCode로 전달합니다. "CA"는 Country.Code 속성을 CA로 설정하고 'Name'속성을 미국으로 남겨 둡니다. 미리 채워진 도메인 객체를 업데이트하고 있다는 것을 기억하십시오.이 때문에 올바른 Country 객체를 찾기 위해 country 메소드를 호출해야합니다. Dto에서 'Code'를 캡처 한 다음 해당 코드를 사용하여 올바른 Country 객체를 조회하려고합니다. – Galen