C# 基于其他键和值表的Linq分组
我有两个实体C# 基于其他键和值表的Linq分组,c#,mysql,entity-framework,linq,C#,Mysql,Entity Framework,Linq,我有两个实体ItemChange和PK: [Table("Sync_Changes")] public class ItemChange { public Guid AgentId { get; set; } public DateTime ChangeTime { get; set; } [Required] public string Descriminator { get; set; } [Key] [DatabaseGenerated
ItemChange
和PK
:
[Table("Sync_Changes")]
public class ItemChange
{
public Guid AgentId { get; set; }
public DateTime ChangeTime { get; set; }
[Required]
public string Descriminator { get; set; }
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public Guid ID { get; set; }
[NotMapped]
public object Item { get; set; }
public virtual ICollection<PK> PKs { get; set; }
public virtual ChangeType State { get; set; }
}
我想根据PKs对ItemsChange
进行分组,例如,我有两个ItemsChange,它们具有PKs[({Key=“Id”,Value=“1”},{Key=“GroupId”,Value=“2”})]
以及ChangeType[已创建、更新]
我想知道如何使用Linq或Mysql脚本实现这一点。
两个表的屏幕截图:
我希望基于pks对主题进行分组的更改。
PKs
您是否先使用代码?是,我首先使用代码。我没有遵循太多您拥有的
changetype
one-to-many-->PK
一个PK
怎么可能有很多changetype
坐在一个变更日志中PK表只存储由changetype更改的类型描述符对象的PK。我的意思是PK
中的选择器是什么许多changetype
s,我看到表PK
中有一对一的changeId和change,AgentId和valuetype只有很少的值,,,这使得唯一的逻辑选择器列value
对吗?
[Table("Sync_PKs")]
public class PK
{
public PK(string key, object value)
{
Key = key;
Value = value?.ToString();
ValueType = value?.GetType().Name;
}
[Key]
[Column(Order = 0)]
[ForeignKey(nameof(Change))]
public Guid ChangeId { get; set; }
[Key]
[Column(Order = 1)]
public string Key { get; set; }
[Required]
public string Value { get; set; }
[Required]
public string ValueType { get; set; }
public virtual ItemChange Change { get; set;
}