我正在为我的项目使用 asp.net 样板模板。
看起来更喜欢使用数据注释而不是流畅的 API。
我喜欢使用 Fluent API,因为它非常干净。
但是当我尝试为我的实体使用 Fluent API 时它工作正常,但是当我开始使用像
Auditable
实体这样的 abp 框架中的实体时,我无法添加迁移,因为它要求我配置关系对于CreatorUser
,它在Auditable
实体中定义并使用数据注释进行映射。
我仍然能够配置
CreatorUser
,但最终从另一个表中删除了 CreatorUser
的 FK 并重新创建它。
这就是我的实体的配置方式。让我知道是否有人能够在 aspnetboiler 板中使用流畅的 API。
public class ItemGroup : FullAuditedEntity<int,AbpUser<User>>
{
public string Name { get; set; }
public string Description { get; set; }
//[ForeignKey("Id")]
public int? ParentItemGroupId { get; set; }
public virtual ItemGroup ParentItemGroup { get; set; }
public virtual ICollection<ItemGroup> ItemGroups { get; set; }
//public virtual AbpUser<User> CreatorUser { get; set; }
//To-Do : Need to add parent itemgroup id, but self referencing is not supported in abpframework/EFCore, need to solve this and add it later.
}
public class ItemGroupEntityConfiguration : IEntityTypeConfiguration<ItemGroup>
{
public void Configure(EntityTypeBuilder<ItemGroup> builder)
{
builder.ToTable("ItemGroups");
builder.HasOne(x => x.ParentItemGroup).WithMany(x => x.ItemGroups).HasForeignKey(b => b.ParentItemGroupId);
builder.HasOne(x => x.CreatorUser).WithMany().HasForeignKey(i => i.CreatorUserId);
}
}
AbpUser 是一个抽象类。你应该传递那个类的实现。
public abstract class AbpUser<TUser> : AbpUserBase, IUser<long>, IFullAudited<TUser>
where TUser : AbpUser<TUser>