2017-11-04 6 views
0

데이터베이스의 Entity Framework 먼저 C# WebApi에서 많은 관계가 많은 테이블 모델 클래스가 만들어졌습니다.엔터티 프레임 워크 다수에서 다수 및 기존 데이터 게시

테이블 ACCOUNTS 및 테이블 METADATA에는 이들 간의 다 대다 관계가 있습니다. ACCOUNTS 테이블에 새 항목을 추가하고이 항목을 METADATA 테이블의 기존 항목과 연결하려고합니다. AngularJS를 사용하여 데이터를 게시하려면 어떻게해야합니까?

나는 $의 HTTP에이 데이터를 보내고 :

계정 변수는 위의 POST와 [FromBody]과 같이 사용하여 C#을 웹 API에 의해 읽고있는 ACCOUNTS 클래스를 기반으로
var account: { 
    Title: 'Title', 
    User: 'User', 
    METADATA: [ 
    { 
     Name: 'value1' 
    }, 
    { 
     Name: 'value2' 
    }] 
} 

:

[HttpPost] 
    public async Task<IHttpActionResult> Add([FromBody]ACCOUNTS account) 
    {        
     db.ACCOUNTS.Add(account); 
     await db.SaveChangesAsync(); 

     int accountId = account.AccountId; 

     return Ok(accountId); 
    } 

METADATA 테이블에 value1 및 value2가 존재한다는 기본 키 위반 오류가 발생합니다. 값이 테이블에 있으므로 올바른 값입니다.

실제로이 값을 ACCOUNTS 및 METADATA를 다 대다 관계로 연결하고 추가하지 않는 "중간 테이블"에 연결해야합니다.

이 시나리오에 대한 솔루션을 원하십니까?

답변

1

전달 된 연결이 끊긴 account 개체를 삽입하기 전에 자식 METADATA 개체를 기존 데이터베이스 엔터티에 매핑해야합니다. 예를 들어 다음과 같이 사용 :

var medataNames = account.METADATA.Select(e => e.Name); 
account.METADATA = db.METADATA.Where(e => metadataNames.Contains(e.Name)).ToList(); 
db.ACCOUNTS.Add(account); 
// ... 
+0

굉장! 고맙습니다. – sski