asp.net Web API发布查询

wnavrhmk  于 2023-01-10  发布在  .NET
关注(0)|答案(1)|浏览(210)

我的英语不好,但我会尽力解释的
模特看起来像

incidents -> accounts -> contacts

incident -> account, 1->M,
account -> contact , 1-> M.

添加新事件的逻辑:
1.如果帐户名不在系统中-〉API必须返回404 - NotFound
1.如果联系人在系统中(通过电子邮件检查)-〉更新联系人记录,将联系人链接到帐户
如果帐户不在系统中,一切都是好的(我得到404)。
但是,当帐户存在时,我会遇到重复的异常,因为我试图添加一个与已存在的帐户同名的新帐户。
我该如何解决这个问题?如果帐户已经性别歧视-〉使用这个帐户,不要添加新的。

[HttpPost]
public async Task<ActionResult<Incident>> PostIncident(Incident incident)
{          
        foreach(var account in incident.Accounts)
        {
            bool accountexist = _context.Accounts.Any(x => x.Name == account.Name);

            if (!accountexist)
                return NotFound();
            
            foreach (var contact in account.Contacts)
            {
                var contactfromdb = _context.Contacts.Where(x => x.Email == contact.Email).FirstOrDefault();

                if (contactfromdb != null)
                {
                    contactfromdb.FirstName = contact.FirstName;
                    contactfromdb.LastName = contact.LastName;
                    contactfromdb.AccountId = account.Id;

                    _context.Contacts.Update(contactfromdb);
                    _context.SaveChanges();
                }
            }
        }
}

下面是经过POST艾德的JSON数据:

{  
  "description": "stringаа",
  "accounts": [
    {
      "name": "string3213",      
      "contacts": [
        {
          "firstName": "string",
          "lastName": "string",
          "email": "string231231"
        }
      ]
    }
  ]
}
zz2j4svz

zz2j4svz1#

我认为你应该创建一个服务层。如果你没有找到一个用户,你应该抛出未找到异常。如果已有的数据来了,抛出冲突异常等。
我认为你的项目结构有问题

相关问题