Я пытаюсь добавить новые записи в моей БД в несколько связанных таблиц, у всех из которых есть идентификаторы как PK и идентификаторы других таблиц как FK.Мой подход основан на учебном пособии по NerdDinner, но я не могу найти примеров того, как добавлять новые записи в БД, когда задействовано более одной таблицы.
ModelState.IsValid завершается неудачно при попытке сохранитьновые записи по какой-то причине.Я попытался добавить их, как показано ниже, и обновить каждую таблицу отдельно, но это не работает.
Я новичок в MVC, .NET и программировании в целом и не могу понять, что я делаю неправильно.Любая помощь приветствуется.
[HttpPost]
public ActionResult Create(Team team)
{
Team t = team;
UpdateModel(t);
if (ModelState.IsValid)
{
teamRepository.AddTeam(t);
teamRepository.Save();
return RedirectToAction("Details", new { id = t.TeamID });
}
return RedirectToAction("Create");
}
Вот ViewModel, который я использую
public class TeamViewModel
{
//Properties
public Team team { get; set; }
public IQueryable<Department> departmentsList { get; set; }
public IQueryable<Team> teamList { get; set; }
public SelectList countriesList { get; set; }
public Country country { get; set; }
//Constructors
public TeamViewModel()
{
}
public TeamViewModel(IQueryable<Team> teams)
{
teamList = teams;
}
public TeamViewModel(TeamViewModel vm)
{
team = vm.team;
departmentsList = vm.departmentsList;
}
public TeamViewModel(TeamViewModel vm, Country c)
{
team = vm.team;
team.CountryID = c.CountryID;
}
public TeamViewModel(TeamViewModel vm, IEnumerable<Country> countries)
{
team = new Team();
countriesList = new SelectList(countries, "CountryID", "ShortName");
}
}
И это View, если он нужен
<% using (Html.BeginForm()) {%>
<%: Html.ValidationSummary(true) %>
<fieldset>
<div class="editor-label"><%: Html.LabelFor(m => m.team.ShortName) %></div>
<div class="editor-field"><%: Html.TextBoxFor(m => m.team.ShortName) %><%: Html.ValidationMessageFor(m => m.team.ShortName, "*") %></div>
<div class="editor-label"><%: Html.LabelFor(m => m.team.FullName)%></div>
<div class="editor-field"><%: Html.TextBoxFor(m => m.team.FullName)%><%: Html.ValidationMessageFor(m => m.team.FullName, "*")%></div>
<div class="editor-label"><%: Html.LabelFor(m => m.team.DateEstablished)%></div>
<div class="editor-field"><%: Html.TextBoxFor(m => m.team.DateEstablished)%><%: Html.ValidationMessageFor(m => m.team.DateEstablished, "*")%></div>
<div class="editor-label"><%: Html.LabelFor(m => m.team.City)%></div>
<div class="editor-field"><%: Html.TextBoxFor(m => m.team.City)%><%: Html.ValidationMessageFor(m => m.team.City, "*")%></div>
<div class="editor-label"><%: Html.LabelFor(m => m.team.Country) %></div>
//The misspelled field
//<div class="editor-field"><%: Html.DropDownListFor(model => model.team.Country, Model.countriesList, "<--Select Country-->") %></div>
//The corrected field
<div class="editor-field"><%: Html.DropDownListFor(model => model.team.CountryID, Model.countriesList, "<--Select Country-->") %></div>
</fieldset>
<p>
<input type="submit" value="Save" />
</p>