获取按其类型设置的实体

时间:2017-11-20 18:44:48

标签: c# entity-framework-core

我有一个代码可以在.Net 4.6中使用EF6,但不能与ef.core一起工作。编译报告

  

方法没有超载'设置'需要1个参数(CS1501)

  Type type = Type.GetType("ContextName.SomeModel");
  if (type == null) return null;

   var entity = db.Set(type).Find(id);

基本上,我通过字符串名称获取对象。如何在.core(v 2.0)中实现这一目标?

我的进口商品:

using System;
using System.Collections;
using System.Collections.Generic;

using System.Linq;
using System.Reflection;

using System.Linq.Dynamic.Core;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.ChangeTracking;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Identity;
using Shared.Web.MvcExtensions;

1 个答案:

答案 0 :(得分:8)

EF Core仅公开通用方法Set<T>()。没有重载将类型作为参数,就像我们在EF 6中使用Set(Type type)一样。

您似乎需要从实体集中查找数据。 EF Core只是简单了,因为它将Find之类的实例方法直接暴露给DbContext类。

以下是EF 6中的代码

var entity = db.Set(type).Find(id);

可以像下面这样在EF Core中重写:

var entity = db.Find(type, id);