表ACCOUNTS和表METADATA之间存在多对多关系。 我想在ACCOUNTS表上添加一个新条目,并将此条目与METADATA表中的一些现有条目相链接。如何使用AngularJS发布数据呢?
我发送的数据是$ http:
var account: {
Title: 'Title',
User: 'User',
METADATA: [
{
Name: 'value1'
},
{
Name: 'value2'
}]
}
上面的帐户变量基于ACCOUNTS类,C#web api正在使用POST和[FromBody]读取,如下所示:
[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链接为多对多关系,而不是添加。
此方案的任何解决方案?
答案 0 :(得分: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);
// ...