ich mein Problem vereinfacht, wie ich konnte, ich habe zwei Klassen Employee
, Departments
ich zwischen ihnen eine Eins-zu-Beziehung machen sollEintritt in zwei Tabellen gespeichert hat man zu viele Beziehung in mvc 4 Code zuerst
public class Employee
{
public int Id { get; set; }
public string Name { get; set; }
public string salary { get; set; }
public virtual Department depatments { get; set; }
}
//////////////////////
public class Department
{
public Department()
{
this.employees = new HashSet<Employee>();
}
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Employee> employees { get; set; }
}
und das ist meine Kontextklasse
public class myEntity :DbContext
{
public DbSet<Employee> employees {get;set;}
public DbSet<Department> Departments {get;set;}
}
gut, ich habe einen Create
Action geschaffen, um der Lage sein, neuen Datensatz zu Employee
und füllte es eine selectlist
mit Department
Tabelle/Klasse und übermittelt durch viewbag
[HttpGet]
public ActionResult Create()
{
ViewBag.xx = new SelectList(mycontext.Departments, "Id", "Name");
return View();
}
[HttpPost]
public ActionResult Create(Employee emp)
{
mycontext.employees.Add(emp);
mycontext.SaveChanges();
return RedirectToAction("Index", "Employee");
}
Und es gibt die view
zu sehen hinzufügen
**@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<legend>Employee</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.salary)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.salary)
@Html.ValidationMessageFor(model => model.salary)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.depatments)
</div>
<div class="editor-field">
@Html.DropDownListFor(model =>model.depatments.Id,@ViewBag.xx as SelectList)
@Html.ValidationMessageFor(model => model.salary)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
Ich lief es, alles ist in Ordnung und Datenbank erstellt. die Ansicht Dropdownliste Rendern ID
Und Name
wie es sollte.
Normalerweise sollte jeder Mitarbeiterdatensatz Department ID
als Fremdschlüssel haben. Das Problem ist, wenn ich neue Datensatz hinzufügen zu Employee
es einen neuen Rekord in Department
hinzufügen, wo es nur ID
holen sollte, und fügen Sie Employee
Hinweis: Ich füllte die Department
ersten