使用实体框架向表中插入记录

本文关键字:插入 记录 实体 框架 | 更新日期: 2023-09-27 18:04:11

我有一个DbContext对象,它有一个名为'Employees'的表。

我有一个雇员对象,我想插入到Employees表中。

我不能直接从上下文中使用Employees。我想用表名访问:这是可能的吗?

 MyContext _ctx;
 Type employee = a.GetType("SC.Employee"));
 object employee = Newtonsoft.Json.JsonConvert.DeserializeObject(emp, employee);
 using (_ctx = new MyContext())
 {
     //I am trying to insert the employee object to my entity. But this doesn't work
     //_customCtx["Employees"].add(employee);
 }

使用实体框架向表中插入记录

如果我理解你的问题,你想先将Json反序列化到Employee对象,然后将其保存到您的上下文中?

我建议你这样做。

Employee myNewEmployee = JsonConvert.DeserializeObject<Employee>(json_string);
using (var _ctx = new MyContext())
{
   _ctx.Employee.Add(myNewEmployee);
}

即使,正如您所说的,'我想根据我收到的json对象在运行时决定实体',您也需要表Employees作为入口点。

因此在上下文中添加DbSet<Employee> Employees

然后,如果你必须工作的实体是动态确定的,你可以使用反射来搜索"雇员"在你的MyContext类型,然后与选定的实体(可能与动态)工作。但是你通常有一组有限的实体要处理所以为什么不直接写if来选择正确的实体呢?

顺便说一下,这感觉就像你在另一个层次或其他地方没有正确地构建东西