我有这些模型
public class employee
{
public int Empid {get;set;}
public string name {get;set;}
public string fname{get;set;}
}
public class empLanguage
{
public string language { get; set; }
public string speaking{ get; set; }
}
public class EmpInsertion
{
public string name { get; set; }
public string fname { get; set; }
public List<ViewModels.Employee.empLanguage> EmpLangs { get; set; }
}
我有这个控制器
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Insert(EmpInsertion empins)
{
if (ModelState.IsValid)
{
Employee Emp = new Employee();
Emp.name= empins.name;
Emp.fname= empins.fname;
var MaxID = (from emp in db.Employees select emp.EmployeeID).Max();
EmpLanguage objlng = new EmpLanguage();
objlng.EmployeeID = MaxID;
foreach (var emplang in Emp.EmpLanguages.ToList())
{
empLanguage lng = new empLanguage();
emplang.Language = lng.language;
emplang.Speaking = lng.speaking;
empins.EmpLangs.Add(lng);
}
}
}
我有两个表Employee(id,name,fname)语言(id,language,speak,empid)它有一对多的关系,每个员工可以同时说多种语言。 我想从一个视图添加两个表中的数据,如何向一个员工添加多种语言
答案 0 :(得分:0)
我认为你可以做这样的事情。
public Employee CreatePartnerWithUser(Employee employee, List<Language> language)
{
using (DataContext context = new DataContext())
{
using (var trans = context.Database.BeginTransaction())
{
var insertEmployee = context.Employee.Add(employee);
context.SaveChanges();
var insertLanguage = context.Language.AddRange(language);
context.SaveChanges();
trans.Commit();
}
}
}
答案 1 :(得分:0)
如果使用DbContext和EF改变你的模型:
public class employee
{
public int id {get; set;}
public string name {get; set;}
public string fname {get; set;}
public virtual ICollection<language> language { get; set; }
}
public class language
{
public int id {get; set;}
public string languageName {get; set;}
public virtual ICollection<employee> employee { get; set; }
}
然后在DbContext类中添加此模型构建器以具有多对多关系
modelBuilder.Entity<employee>()
.HasMany(e => e.language)
.WithMany(e => e.employee)
.Map(m => m.ToTable("employeeLanguage").MapLeftKey("employeeID").MapRightKey("languageID"));
之后,您可以在这样的模型中插入员工:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Insert(employee emp, string langs)
{
if (ModelState.IsValid)
{
using(DbContext db = new DbContext())
{
if(langs != null)
{
string[] strLangs = langs.Split('-');
foreach (var l in strLangs)
{
string lan = l.Trim();
while (lan.Contains(" "))
lan.Replace(" ", " ");
emp.language.Add(new language
{
languageName = lan
});
}
}
db.employee.Add(emp);
db.SaveChanges();
return View("YourReturnPage");
}
}
return View(Insert);
}
并在Insert.cshtml文件中添加这段代码:
<div class="form-group">
<label for="Title" class="control-label col-md-2">Languages</label>
<div class="col-md-10">
<textarea type="text" name="langs" class="form-control" value="@ViewBag.langs"></textarea>
<p class="help-block text-danger">Separate language keywords with - </p>
</div>
</div>