我遇到了基于实体框架的 api 的问题,其中 3rd 方开发人员错误地发送了太大的查询并导致系统性能下降。我已经通知他们停止练习,但我想将查询限制在 1 分钟内,然后将它们切断。
听起来我应该能够在构造函数中设置命令超时(如下所示)。当我使用长查询对其进行测试时,它完全按照之前(3+ 分钟)执行查询,它似乎根本不遵守命令超时。
我做错什么了吗?这不是命令超时的工作方式吗?它是异步的,命令超时是否不适用于异步?任何解决方案或指针将不胜感激。
public class CustomContext : DbContext
{
public CustomContext(string connectionName)
: base(connectionName)
{
var objectContext = (this as IObjectContextAdapter).ObjectContext;
objectContext.CommandTimeout = 60;
}
public CustomContext(EntityConnection connection)
: base(connection, contextOwnsConnection: false)
{
var objectContext = (this as IObjectContextAdapter).ObjectContext;
objectContext.CommandTimeout = 60;
}
}
Run Code Online (Sandbox Code Playgroud) 我正在创建一个新的C#OData4 Web API,其中一个名为Call具有动态属性的类,OData 4允许通过"Open Types".我相信我已经设置了所有内容并正确配置它,但序列化响应不包括动态属性.
我配置错了吗?
public partial class Call
{
public int Id { get; set; }
public string Email { get; set; }
public IDictionary<string, object> DynamicProperties { get; }
}
Run Code Online (Sandbox Code Playgroud)
public class CallController : ODataController
{
[EnableQuery]
public IQueryable<Call> GetCall([FromODataUri] int key)
{
return _context.Call.GetAll();
}
}
Run Code Online (Sandbox Code Playgroud)
public static partial class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
AllowUriOperations(config);
ODataModelBuilder builder = new ODataConventionModelBuilder();
builder.ComplexType<Call>();
var model = builder.GetEdmModel();
config.MapODataServiceRoute(RoutePrefix.OData4, RoutePrefix.OData4, model);
}
private …Run Code Online (Sandbox Code Playgroud)