Как добавить значения в таблицу 2, а затем сопоставить внешний ключ из одной таблицы в другую таблицу в Entity Framework Core, используя Postgresql? - PullRequest
0 голосов
/ 28 февраля 2019

Вот еще одна проблема, с которой я столкнулся в ASP.NET Core. Допустим, у меня есть 2 таблицы:

Accommodation
( ID, Name, LocationID)
Location
(ID, Address, Latitude, Longitude)

И у меня есть форма:

Name:
Address:
Latitude:
Longitude:

Затем, когда кнопканажата кнопка. Я хочу, чтобы значение обновлялось в обеих таблицах, а также в MAP для таблицы LocationID to Accommodation Как мне ее кодировать в EF Core?Как правильно

1 Ответ

0 голосов
/ 01 марта 2019

Вы можете попробовать следующий пример, который я сделал:

Модель размещения и Модель размещения

 public class Accommodations
{
    public int ID { get; set; }
    public string Name { get; set; }
    public int LocationID { get; set; }
    [ForeignKey("LocationID")]
    public Location Location { get; set; }
}
public class Location
{
    public int ID { get; set; }
    public string Address { get; set; }
    //other stuff you want
}

DbУстановить две модели в DbContext

 public class MVCDbContext:DbContext
{
    public MVCDbContext(DbContextOptions<MVCDbContext> options) : base(options)
    { }
    public DbSet<Accommodations> Accommodations { get; set; }
    public DbSet<Location> Location { get; set; }
}

Дизайнобратите внимание на asp-for тега ввода

@model MVC2_1Test.Models.Accommodation.Accommodations
@{
ViewData["Title"] = "Accommondation";
}

<h2>Accommondation</h2>

<div class="row">
<div class="col-md-4">
    <form id="form" class=".has-error" asp-action="CreateAccommodation">
        <div asp-validation-summary="ModelOnly" class="text-danger"></div>
        <div class="form-group ">
            <label asp-for="Name" class="control-label"></label>
            <input asp-for="Name" class="form-control" id="cusName" />
            <span asp-validation-for="Name" class="text-danger"></span>
        </div>
        <div class="form-group">
            <label asp-for="Location.Address" class="control-label"></label>
            <input asp-for="Location.Address" class="form-control" id="age" />
            <span asp-validation-for="Location.Address" class="text-danger"></span>
        </div>
        <div class="form-group">
            <input type="submit" value="Create" class="btn btn-default" />

        </div>
    </form>
</div>
</div>

Действие по обновлению обеих таблиц

[HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> CreateAccommodation([FromForm]Accommodations accommodation)
    {
        if (ModelState.IsValid)
        {
            _context.Add(accommodation);
            await _context.SaveChangesAsync();
            return RedirectToAction(nameof(Index));
        }
        return View(accommodation);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...