我在项目中使用Syncfusion查询生成器。我想在我的blazor客户端将RuleModel的json发送到api服务器,在api服务器中,我反序列化并从RuleModel获得sql查询。
我尝试这个代码:
var queryBuilder = new SFQueryBuilder<MyEntity>();
var ruleModel = _jsonSerializer.Deserialize<RuleModel>(ruleJson);
var query = queryBuilder.GetSqlFromRules(ruleModel);
当运行此代码时,我得到NullReferenceException。
在我的项目中,我安装Syncfusion.Blazor.QueryBuilder版本:20.3.0.50
我们根据您的要求准备了样品。请参阅下面的代码片段和所附的示例。我们不能像下面的代码中那样使用查询生成器实例;如果我们这样做,查询生成器组件将无法正确呈现,并引发错误。
示例链接-https://www.syncfusion.com/downloads/support/directtrac/general/ze/QueryBuilderSample1558538802
var queryBuilder = new SFQueryBuilder<MyEntity>();
var ruleModel = _jsonSerializer.Deserialize<RuleModel>(ruleJson);
var query = queryBuilder.GetSqlFromRules(ruleModel);
为了解决这个问题,我们引入了一种单独的方法来将规则转换为SQL查询。
[HttpGet("{argument}")]
public void Get(string argument)
{
var rule = JsonConvert.DeserializeObject<RuleModel>(argument);
if (rule != null)
{
var query = GetSqlString(rule, false, null);
}
}