多个主键如何配置导航 返回

SqlSugar 沟通中
3 217
   public partial class ATable 
   {
     

       /// <summary>
       /// Desc:
       /// Default:
       /// Nullable:False
       /// </summary>           
       [SugarColumn(IsPrimaryKey = true, ColumnName = "prodCd")]
       public string ProdCd { get; set; } = null!;

       /// <summary>
       /// Desc:
       /// Default:
       /// Nullable:False
       /// </summary>           
       [SugarColumn(IsPrimaryKey = true, ColumnName = "custCd")]
       public string CustCd { get; set; } = null!;

       /// <summary>
       /// Desc:
       /// Default:
       /// Nullable:False
       /// </summary>           
       [SugarColumn(IsPrimaryKey = true, ColumnName = "vendCd")]
       public string VendCd { get; set; } = null!;
       
         /// <summary>
       /// Desc:
       /// Default:
       /// Nullable:False
       /// </summary>           
       [SugarColumn(IsIdentity = true, ColumnName = "rowId")]
       public long ProdName { get; set; }
       
       [Navigate(NavigateType.OneToOne, nameof(ProdCd), nameof(VendCd), nameof(CustCd))]
       public BTable? B{ get; set; }
     
   }
   
    public partial class BTable 
   {
     

       /// <summary>
       /// Desc:
       /// Default:
       /// Nullable:False
       /// </summary>           
       [SugarColumn(IsPrimaryKey = true, ColumnName = "prodCd")]
       public string ProdCd { get; set; } = null!;

       /// <summary>
       /// Desc:
       /// Default:
       /// Nullable:False
       /// </summary>           
       [SugarColumn(IsPrimaryKey = true, ColumnName = "custCd")]
       public string CustCd { get; set; } = null!;

       /// <summary>
       /// Desc:
       /// Default:
       /// Nullable:False
       /// </summary>           
       [SugarColumn(IsPrimaryKey = true, ColumnName = "vendCd")]
       public string VendCd { get; set; } = null!;
       
         /// <summary>
       /// Desc:
       /// Default:
       /// Nullable:False
       /// </summary>           
       [SugarColumn(IsIdentity = true, ColumnName = "rowId")]
       public long ProdName { get; set; }
   }

  上面两个实体, Atable 和 Btable 都是 三个字段联合主键, 我在 Atbale 配置了 导航 

 [Navigate(NavigateType.OneToOne, nameof(ProdCd), nameof(VendCd), nameof(CustCd))]
       public BTable? B{ get; set; }

我想进行  查询和 插入操作 ,但是 一直报错  “使用条件的上下文(在 'AND' 附近)中指定了非布??型的表?式”。
查看了sql 语句 的确有问题 custcd 没有条件
select [updClass] AS [UpdClass],[BaseVersion] AS [BaseVersion] FROM [tb_mst_MT0080]  WHERE CustCd   AND   [vendCd] = '000T947842K501'
我看了文档 可以使用 [Navigate(NavigateType.Dynamic, "[{m:\"Id\",c:\"AddressId\"},{m:\"Id2\",c:\"AddressId2\"}]")]

但是这样只能查询

我用的是sql server 数据库 请问 我应该如何配置

热忱回答3

  • 多主键只支持这种

     [Navigate(NavigateType.Dynamic, "[{m:\"Id\",c:\"AddressId\"},{m:\"Id2\",c:\"AddressId2\"}]")]

    0 回复
  • 只支持查询

    0 回复
  • @fate sta:好的 感谢 希望之后可以完善联合主键 导航配置

    0 回复