我有一个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来选择正确的实体呢?
顺便说一下,这感觉就像你在另一个层次或其他地方没有正确地构建东西