我有一个代码可以在.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;
答案 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);