마이그레이션과의 Subsonic '관계'를 어떻게 처리합니까?
-
16-09-2019 - |
문제
이 기사에 따르면 :http://subsonicproject.com/docs/3.0_migrations
Bottom line: if you're a developer that is concerned about database design,
migrations might not be for you.
좋아, 괜찮습니다. 데이터베이스를 단순히 비즈니스 로직을 포함하지 않는 지속적인 데이터 저장소로 취급 할 수 있습니다. 다시 말해, 영광스러운 텍스트 파일.
내가하는 방법을 모르는 것은 두 객체를 함께 관련시키는 것입니다. 예를 들어이 두 클래스를 예로 들어 보겠습니다.
public class Disaster
{
public int DisasterId { get; set; }
public string Name { get; set; }
public DateTime? Date { get; set; }
public IList<Address> Addresses { get; set; }
}
public class Address
{
public int AddressId { get; set; }
public string WholeAddressHereForSakeOfBrevity { get; set; }
}
Disaster
포함 IList
다중 Addresses
그것은 재난에 맞았습니다. 내가 사용할 때 SimpleRepository
이것을 데이터베이스에 추가합니다 SimpleRepositoryOptions.RunMigrations
, 모든 열이있는 테이블을 생성하지만 예상대로 외래 키 열은 없습니다.
내가 전화 할 때이 두 가지를 어떻게 연관시킬 것인가 Disaster.Addresses
, 나는 영향을받는 모든 목록을 얻습니다 Addresses
? 이것이 가능합니까 아니면 대신 ActiveRecord를 사용하고 데이터베이스 테이블을 먼저 만들어야합니까? 아니면 재난의 ID에 대한 열을 추가해야합니까? Address
? 그렇다면이 방법은 어떻게 다수의 관계에서 작동합니까?
해결책
가능합니다 - 당신은 단지 손으로 할 수 있습니다. "주소"라는 재난에 속성을 추가하고 ilist <>로 만드십시오 (또는 게으른 부하를 원할 경우 문제를 해결할 수 있습니다). 재난을 회수 할 때 주소를 검색하십시오.
일종의 "매뉴얼"이지만 그게 아이디어입니다. 나는 나중에 릴리스를 추진하기를 바라는 이에 대한 향상을 위해 노력하고 있습니다.
그리고 왜 내가 왜 처음에 그것을하지 않았는지 물어보기 전에 :) 부모/자녀 관계를 기반으로 많은 또는 1 마리를 사용해야하는지 모르기 때문입니다. 당신의 예에서, 나는 그것이 아마도 1에서 많은 사람들이라고 생각하지만, 주소와 재난 (특히 플로리다)에 대해 내가 아는 것을 감안할 때 아마도 많은 사람들이 될 것입니다.
결론 - subonic은 이것을 어떻게 알 수 있습니까? 우리는 "양방향성"에 대한 두 개체를 모두 내성 할 수 있습니다. 즉, 주소가 많은 것보다 많은 재난을 가지고 있다면 (명백하다), DDD를 좋아한다면 그것은 행복하지 않습니다.
나는 문제를 강요 할 어떤 유형의 재정의로 그 규칙에 기대고 있습니다. 이것에 대한 당신의 생각은 환영합니다 :)