Как обновить две таблицы, имеющие отношение внешнего ключа, используя один почтовый запрос - asp.net mvc web api - PullRequest
0 голосов
/ 30 января 2019

Я создал один веб-API mvc asp.net, используя модель Entity Framework, которая может обновлять одну таблицу в одном запросе.Я хочу обновить две таблицы (имеющие отношение внешнего ключа) в одном запросе POST.

Как мне этого добиться?

Что я сделал: -

1.Создал две таблицы tblEmployeeRecord & tblCountryName на сервере sql с EmployeeId в качестве первичного ключа и внешнего ключа соответственно.2. Таблица работодателя Модель: -

public partial class tblEmployeeRecord
    {
        public int EmployeeId { get; set; }
        public string Name { get; set; }
        public string userName { get; set; }
        public string userRole { get; set; }
    }

3. Таблица наименования страны Модель: -

public partial class tblCountryName
    {
        public int CountryId { get; set; }
        public int EmployeeId { get; set; }
        public string Country_Name { get; set; }
       }

4. Созданная обертка Модель выглядит следующим образом: -

 public class UserAndCountry
    {
        public tblEmployeeRecord UserRecord { get; set; }
        public tblCountryName CountryRecord { get; set; }
    }

5.ActionResult метод в контроллере, который обрабатывает пост-запрос: -

[ResponseType(typeof(UserAndCountry))]
        public IHttpActionResult PosttblEmployeeRecord(UserAndCountry tblEmployeeRecord)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }
            db.tblCountryNames.Add(tblEmployeeRecord.CountryRecord);
            db.tblEmployeeRecords.Add(tblEmployeeRecord.UserRecord);
            db.SaveChanges();

            return CreatedAtRoute("DefaultApi", new { id = tblEmployeeRecord.UserRecord.EmployeeId }, tblEmployeeRecord);
        }

6. Примечание: -Что происходит: -
Когда я не определяю отношение внешнего ключа в SQL Serverмежду этими двумя таблицами я могу обновить обе таблицы, но когда я определяю отношение внешнего ключа, я не могу обновить эти таблицы
Каким будет мой объект запроса в том случае, куда я идунеправильно?
7.Мой объект текущего запроса: -

{
    "CountryRecord":
{
        "Country_Name": "AP"
},
"UserRecord":
{

        "Name": "Test User",
        "userName": "Test.User@mail.com",
        "userRole": "Hr"
  }
}

1 Ответ

0 голосов
/ 31 января 2019

Сила структуры сущности заключается в свойствах навигации для отношений.Допустим, ваши модели были:

public partial class Employee
{
    public int EmployeeId { get; set; }
    public string Name { get; set; }
    public string userName { get; set; }
    public string userRole { get; set; }

    // Foreign Key
    public int CountryId { get; set; }
    // Navigation Property
    public virtual Country EmployeeCountry
}

public partial class Country
{
    public int CountryId { get; set; }
    public string Country_Name { get; set; }
}

Теперь ваше обновление становится:

var employeeRecord = tblEmployeeRecord.UserRecord;
// add the country. EF will make the relationship automagically
employeeRecord.EmployeeCountry = tblEmployeeRecord.CountryRecord;
db.Employees.Add(employeeRecord);
db.SaveChanges();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...