2016-11-20 5 views
0

이 필요합니다. 그 중 하나는 첫 번째 계정에 속해야하며 두 번째 계정은 두 번째 계정에 속해야합니다. 첫 번째 계정에는 권한이 있지만 두 번째 계정에 대한 권한이없는 사용자는 두 항목을 모두 볼 수 없어야합니다.엔티티 프레임 워크 순환 참조 내가 가지고 POI있는 모든 전송을 위해 행의 쌍을 갖고 싶어

여기에 문제는 새로운 항목을 추가하는 방법을 모르겠다는 것입니다. 나는 시도했다 :

var accounts = Database.Accounts.ToList(); 
Transfer pair, pair2; 
Database.Transfers.Add(
    pair = new Transfer() 
    { 
     ID = Guid.NewGuid(), 
     Ammount = 100, 
     Filter = accounts[0].Filter, 
     Acount = accounts[0], 
    } 
); 

Database.Transfers.Add 
(
    pair2 = new Transfer() 
    { 
     ID = Guid.NewGuid(), 
     Ammount = -100, 
     Filter = accounts[1].Filter, 
     Acount = accounts[1], 
    } 
); 
pair.PairedTransfer = pair2; 
pair2.PairedTransfer = pair; 

Database.SaveChanges(); 

그러나 나는 순환 참조 문제가있다.

답변

0

문제 EF 어느 1. 2. 2. 참조가 (그래서 외부 키를 할당 할 수 없습니다)

I를 1로 기준을 가지고 있기 때문에, 먼저 DB에 추가로 이동 알 수 없다는 것입니다 null PairedTransfer로 첫 번째 전송을 삽입 한 다음 할당 된 첫 번째 PairedTransfer를 삽입 한 다음 첫 번째 PairedTransfer로 두 번째 전송하도록 할당하십시오.)

+0

문제점을 이해하고 있습니다. 해결 방법을 모르겠습니다. 둘 다 필요합니다 (null이 아님). 그래서 null로 한 행을 추가하는 방법을 모르겠습니다. – Vasoli

+0

오, 이제 유창한 API를 사용하여 PairedTransfer가 필수라는 것을 알 수 있습니다.이 경우 null (이 목적 만)의 역할을하는 "더미"전송을 사용할 수 있습니다. 또는 가능하다면 필요한대로 명시하지 마십시오. – MacakM

+0

그리고 첫 번째 더미 개체를 만드는 방법. 아마 그 객체가 스스로를 참조 할 수 있을까요? 어떻게 든 그 모든 것이 1 건의 거래라고 말할 수 있습니까? 나는 db가 일관성이 없도록하고 싶지 않습니다. – Vasoli