У меня проблема с вставкой данных из поля зрения в базу данных SQL Server.
Когда я нажимаю «Создать» в своем представлении, я получаю сообщение об ошибке, что будет отсутствовать ключ для разных таблиц (например, Kunde / Customer и Ort / City).
Каждая таблица имеет первичный ключ и разные внешние ключи (1: n), определенные в SQL Server Management Studio. Первичный ключ автоматически генерируется SQL Server.
Данные, которые должны быть вставлены из представления и должны быть сохранены в разных таблицах.
Код из моей модели:
public class ViewModelKundeController
{
public string AnredeText { get; set; }
public string Vorname { get; set; }
public string Nachname { get; set; }
public string Strasse { get; set; }
public int Hausnummer { get; set; }
public string Telefon { get; set; }
public string EMail { get; set; }
public string Aktiv { get; set; }
public Nullable<System.DateTime> AGBDatum { get; set; }
public string Anmerkung { get; set; }
public string WhatsappAkzeptiert { get; set; }
public string WebAkzeptiert { get; set; }
public string AGBAkzeptiert { get; set; }
public string Postleitzahl { get; set; }
public string Ort { get; set; }
}
Мои модели данных (используемые для моей Viewmodel) автоматически генерируются подключением Entity Framework (может быть, есть ошибка?)
DbContext
класс потомков:
public class KundeDBContext : DbContext
{
public DbSet<tbl_Kunde> Kunden { get; set; }
public DbSet<tbl_Ort> Orte { get; set; }
public DbSet<tbl_Anrede> Anrede { get; set; }
}
Код контроллера:
// GET: Kunde/Create
public ActionResult Create()
{
return View();
}
[HttpPost]
public ActionResult Create(ViewModelKundeController viewmodel)
{
var kunde = new tbl_Kunde()
{
Vorname = viewmodel.Vorname,
Nachname = viewmodel.Nachname,
Strasse = viewmodel.Strasse,
Hausnummer = viewmodel.Hausnummer,
Telefon = viewmodel.Telefon,
EMail = viewmodel.EMail,
Aktiv = viewmodel.Aktiv,
AGBAkzeptiert = viewmodel.AGBAkzeptiert,
WebAkzeptiert = viewmodel.WebAkzeptiert,
WhatsappAkzeptiert = viewmodel.WhatsappAkzeptiert,
AGBDatum = viewmodel.AGBDatum,
Anmerkung = viewmodel.Anmerkung
};
var anrede = new tbl_Anrede()
{
AnredeText = viewmodel.AnredeText
};
var orte = new tbl_Ort()
{
Ort = viewmodel.Ort,
Postleitzahl = viewmodel.Postleitzahl
};
kdb.Kunden.Add(kunde);
kdb.Anrede.Add(anrede);
kdb.Orte.Add(orte);
kdb.SaveChanges();
return View();
}