ORM을 통해 부분적으로 채워지는 User 클래스가 있다고 가정 해 보겠습니다.하지만이 엔티티와 논리적으로 관련이있는 데이터가 다른 곳에서 제공됩니다.행동 주사를 법인체 또는 더 나은 방법으로?
public class User {
public int Id { get; set; }
public int ServiceId { get; set; }
public string FirstName => null; //this comes from somewhere else
public ICollection<Role> Roles { get; set; }
//etc...
}
이전에는 이와 비슷한 경우 IOC 컨테이너에서 도메인 모델에 단일 인터페이스를 주입하도록 허용했습니다.
public class User {
public readonly IUserBehavior _userBehavior;
public User() {}
public User(IUserBehavior userBehavior) {
_userBehavior = userBehavior;
}
public int Id { get; set; }
public int ServiceId { get; set; }
public string FirstName => _behavior?.getFirstName(this);
public ICollection<Role> Roles { get; set; }
//etc...
}
나는 그러나 최근이 불가능 (적어도, 지금까지 생성자 주입을 사용하는 등)을 보인다 엔티티 프레임 워크에 nHibernate 수로 전환했습니다.
지금 내 옵션은 실종 된 데이터를 엔티티에 직접 가져 오거나 사용하지 않는 것처럼 보이는 이중 디스패치 패턴을 사용하기 위해 서비스 호출 (구현 세부 정보)을 이동하는 것 같다. 유형의 특정 데이터 속성에는 특별한 방법으로 부르심을 받는다. 이것이 국가 변경을위한 행동을 수행했는지, 이중의 파견이 더 의미가 있다는 것을 알 수있었습니다. 또는, 다시 nHibernate로 돌아갈 수 있다고 가정합니다.
나는 내 선택 사항이 실제로 "좋다"거나 내가 고려해야 할 다른 옵션이 무엇인지 묻고있는 것 같아요?
https://stackoverflow.com/questions/28715966/entity-framework-object-materialization-and- dependency-injection의 중복? – Steven
@Steven이 질문을하기 전에이 질문을 봤어. 내가 말했듯이 나의 유스 케이스에 대해 이상하게 느껴지는 이중 파견을 제안하는 것 같다. – Ixonal
퍼블리싱 이벤트를 시작할 때를 제외하고는 두 배 발송과 관련하여 귀하의 질문과 관련이없는 것처럼 보이지 않습니다. – Steven