小编Leo*_*ger的帖子

将 EF Core 约定和 DBFunction 混合用于 JObject 属性

我有一个具有 JObject 类型属性的实体,并且我需要能够针对这些属性使用 DbFunctions。

当我执行时,项目抛出一个异常,指出 DbFunction 不允许使用 JObject 类型的参数。

实体就像...

public class OrchestrationRun
{
   public long Id { get; set; }
    public JObject MetaData { get; set; }
    public JObject SystemMetaData { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

DbContext看起来像......

public class MyDbContext : DbContext
{
    public MyDbContext(DbContextOptions options)
        : base(options)
    {
    }

    public virtual DbSet<OrchestrationRun> OrchestrationRun { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.ApplyConfiguration(new OrchestrationRunConfiguration());

       // DbFunction mapping for JSON_VALUE
       modelBuilder.HasDbFunction( typeof(MyDbContext).GetMethod(nameof(JsonValue)))
                      .HasName("JSON_VALUE")
                      .HasSchema("");
    }

    // …
Run Code Online (Sandbox Code Playgroud)

mapping entity-framework .net-core dbfunctions

6
推荐指数
1
解决办法
3324
查看次数

检测到具有不兼容类型的二元运算符.找到操作数类型edm.string和edm.guid用于种类相等

我使用breeze谓词实现过滤器.使用BreezeJs和ASP.NET WebAPI(Breeze Server Side)和Entity Framework

谓词看起来像这样:

var predicate = breezeProvider.breeze.Predicate.create('serialNumber', '==', $scope.filter.serialNumber);
predicates.push(predicate);
Run Code Online (Sandbox Code Playgroud)

当我执行查询.Breeze使用以下消息抛出异常:

检测到具有不兼容类型的二元运算符.找到操作数类型edm.string和edm.guid用于种类相等

$ scope.filter.serialNumber是一个字符串,serialNumber是一个GUID属性

网址如下.

http:// localhost:51969/breeze/WarehouseProductTransactions/GetProducts?$ filter =(StatusId ne 3d)和(WarehouseId eq 1d)和(AuthorizedADUserId eq'bTdbnW8t6Uu4D4KHCoQOhg ==')和(SerialNumber eq guid'1b9d065e-eb48-4f3d- 883C-2c841771a3e8' )&$的OrderBy =编号&$顶部= 5&$扩大=库存,AuthorizedADUser&$ inlinecount =所有页&)

请注意代码段:

(SerialNumber eq guid'1b9d065e-eb48-4f3d-883c-2c841771a3e8')

我的服务器端如下:

[EnableBreezeQuery(MaxNodeCount = 200)]
public IQueryable<WarehouseProductTransactionDetail> GetProducts()
{
    return _contextProvider.Context.WarehouseProductTransactionDetails;
}
Run Code Online (Sandbox Code Playgroud)

我试图找出如何解决这种情况,但不知道.

任何帮助表示赞赏

c# asp.net-web-api angularjs breeze breeze-sharp

3
推荐指数
1
解决办法
1723
查看次数