我需要有关在 Blazor Datagrid 的 Syncfusion 上实现复合键的建议。它不允许复合键,并且将其添加为功能的票证几年来一直没有动静。
这是使用 ID 和有效起始日期的复合键的 TimeUnit 类:
public class TimeUnit
{
public Int16 timeUnitID { get; set; }
public DateTime validFrom { get; set; }
public DateTime? validTo { get; set; }
public string description { get; set; }
public Nullable<Int16> days { get; set; }
public Common.SpecialProcessing specialProcessing { get; set; }
public DateTime dateLastActivity { get; set; }
}
这是定义键的 dbContext 的摘录
builder.Entity<TimeUnit>().HasKey(table => new
{
table.timeUnitID,
table.validFrom
});
该格式通过 Windows Froms、WPF 和使用 PrimeNG 的 Angular 经受住了时间的考验。但不适用于 Blazor Datagrid 的 Syncfusion。
我正在考虑添加类似的内容
[Not Mapped]
public Int16 timeUnitID { get; set; }
到类并在获取后用连续整数填充它。我可以将它作为 Syncfusion Blazor Datagrid 的牺牲钥匙。
TimeUnit ID 的属性在不同时间点可能不同 - 这适用于我的许多定义,因此需要保留此密钥格式。
在采用我在此概述的方法之前,我正在寻求有关解决方法的建议。
目前我们不支持 Syncfusion Blazor DataGrid 组件中的复合键。但根据您的更新,我们怀疑您希望禁止编辑或添加两列(timeUnitID 和 validFrom),因为它们是从数据库自动生成的。如果是,建议您通过将 timeUnitID 属性定义为 Grid 组件中的 Key (IsPrimaryKey) 并将 IsIdentity 属性定义为这两个属性(timeUnitID 和 validFrom)来实现您的要求。将网格列定义为 IsIdentity 将使这些属性在网格中编辑和添加记录时禁用,并且在保存到数据库时可以自动生成值。
请参阅我们的 UG 和 API 文档供您参考。
https://blazor.syncfusion.com/documentation/datagrid/editing - 注释部分。 https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridColumn.html#Syncfusion_Blazor_Grids_GridColumn_IsIdentity https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Grids.GridColumn.html#Syncfusion_Blazor_Grids_GridColumn_IsPrimaryKey
如果您有任何疑问,请联系我们。