首页 > 解决方案 > 当查找列表包含多条记录时,查找列表停止工作 (XAF)

问题描述

我有一个用于 SalesLines 的 NonPersistentObject,它具有两个持久查找属性 Product 和 TaxRate

TaxRate 查找工作正常,给我一个数据库中所有税码的列表。即使数据库中有很多产品,产品查找也是空的。

代码是

private Product _product;
[ImmediatePostData]
public virtual Product ProductRecord
{
        get
        {
            if (_product == null || _product?.ItemId != ItemId)
            {   
               _product = PersistentObjectSpace.FindObject<Product>(CriteriaOperator.Parse("[ItemId] = ?", ItemId));
            }
            return _product;
        }
        set
        {
            _product = value;
            ItemId = _product.ItemId;
            OnPropertyChanged("ProductRecord");
        }
}

private TaxRate _taxRate;  

[ImmediatePostData]
public virtual TaxRate TaxRecord
{
        get
        {
            if (_taxRate == null || _taxRate?.TaxCodeId != TaxCodeId)
            {
                _taxRate =
                    PersistentObjectSpace.FindObject<TaxRate>(CriteriaOperator.Parse("[TaxCodeId] = ?", TaxCodeId));
               
            }
            return _taxRate;
        }
        set
        {
            _taxRate = value;
            TaxCodeId = _taxRate.TaxCodeId;
            TaxPercentage = (decimal)_taxRate.Percentage;
            OnPropertyChanged("TaxRecord");
        }
}

实体是

[DefaultProperty("ProductCode")]
[NavigationItem("Config")]
public class Product : BasicBo
{
    public Product()
    {
        ExtMaterial = new ExtMaterialProperty();
    }

    [Key]
    public int ItemId { get; set; }
    public string ItemName { get; set; }
    [Column("Item Number")] public string ProductCode { get; set; }
    [MaxLength(10)] public string UnitName { get; set; }
    [ForeignKey("ItemId")] 
    public virtual ExtMaterialProperty ExtMaterial { get; set;}
    public override string ToString()
    {
        return ProductCode;
    }
}

[NavigationItem("Configuration")]
[Table("TaxCode")]
[DefaultProperty("TaxCode")]
[ImageName("BO_List")]
public class TaxRate : BasicBo
{
    [Key] public short TaxCodeId { get; set; }
    [Required]
    [RuleRequiredField(DefaultContexts.Save)]
    [StringLength(20, ErrorMessage = "The field cannot exceed 20 characters. ")]
    public string TaxCode { get; set; }
    [Required]
    [RuleRequiredField(DefaultContexts.Save)]
    public decimal Percentage { get; set; }
    public override string ToString()
    {
        return TaxCode;
    }
}

两个 DbSet 都在 DbContext 中

我尝试从产品中删除 ExtMaterial 导航属性,但没有帮助。我正在使用 XAF 21.1.4、框架 4.7.2、EF 6.4.4

我确实曾经有两个查找工作。我不确定发生了什么变化。

[更新] 我将尝试创建一个新的查找表并不断更改它直到它崩溃。到目前为止,技术适用于以下结构和一些记录

[NavigationItem("Configuration")] [Table("FunCat")] [DefaultProperty("FunCatCode")] [ImageName("BO_List")] public class FunCategory : BasicBo { [Key] public int FunCatId { get; 放; }

    public string FunCatCode { get; set; }

    public virtual TaxRate TaxRate { get; set; }
    public override string ToString()
    {
        return FunCatCode;
    }
}

我发现当数据库中有超过一定数量的 FunCategories 时,不良行为就开始了。此数字由 Options LookupSmallCollectionItemCount 定义,如此处所述

如果选项数量少于选项编号,则查找表有效 好查表

否则不 不好抬头

标签: c#winformsentity-frameworkxaf

解决方案


出现问题是因为我已停用 FullTextFilterAction 控制器。


推荐阅读