是否可以在不知道高级架构的情况下从数据库返回结果集?
我暴露了客户端通过API将参数传递给存储过程的能力:
[Route("TheRequest")]
public object Get([FromUri] TheRequest request)
然后返回:
_repository.Database.SqlQuery<object>(request.ToSqlString()); //execute sql against a stored procedure, passing in the required parameters to it
尝试这样做时,我认为控制器不知道如何序列化返回的对象。这是邮递员的回报:
是否可以在不知道对象架构的情况下从数据库返回Json序列化对象响应?
答案 0 :(得分:1)
是否可以在不知道高级架构的情况下从数据库返回结果集?
关于只是EF ,答案是不是。 EF旨在让您事先了解架构。所以你仍然可以在ContextDb.Database
之外使用DAO,但是你使用EF并没有多大意义。
现在问题是,我可以通常从EF 输入实例然后确定,没问题:
var result = DbContext.Set<T>().FirstOrDefault();
这段代码不知道它在编译时拉动了什么。
是否可以在不知道对象架构的情况下从数据库返回Json序列化对象响应?
Sorta ,正如我之前提到的,你不能像预期的那样使用EF,但你当然可以做类似的事情
public ActionResult Index(string type)
{
var entityType = Type.GetType(type);
// reflection
var methods = typeof(ContextDb).GetMethods("Set");
// Not tested, but something like the following
// Find the Generic Version
var method = methods.Where(m => m.IsGenericMethod).FirstOrDefault();
// Make the method info for the typed method
var methodInfo = method.MakeGenericMethod(entityType);
// Invoke method, cast as needed, get value
var result = (methodInfo.Invoke(ContextDb) as DbSet).FirstOrDefault();
return Json(result);
}