我有一个模型,我想放一个可以从同一个模型填充的额外字段。 IE:类别和子类别。
在我的示例中,访问者可以添加文件类型,但如果文件类型在另一种文件类型下,他可以选择, 但是我无法解决这个问题。下面你可以看到我的模型。
public class HrFileType
{
[Key]
public int Id { get; set; }
[Display(Name = "Dosya Adı")]
public int Name { get; set; }
public int? HrFileTypeId { get; set; }
public virtual HrFileType HrFileType2 { get; set; }
}
答案 0 :(得分:1)
您只需添加ForeignKeyAttribute
,如下所示:
public class HrFileType
{
[Key]
public int Id { get; set; }
[Display(Name = "Dosya Adı")]
public int Name { get; set; }
public int? HrFileTypeId { get; set; }
[ForeignKey("HrFileTypeId")]
public virtual HrFileType HrFileType2 { get; set; }
}
您还可以使用流畅的API来实现此目的:
public class HrFileType
{
[Key]
public int Id { get; set; }
[Display(Name = "Dosya Adı")]
public int Name { get; set; }
public int? HrFileTypeId { get; set; }
public virtual HrFileType HrFileType2 { get; set; }
}
public class YourDbContext : DbContext
{
public DbSet<HrFileType> HrFileTypes { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//
modelBuilder.Entity<HrFileType>()
.HasOptional(c => c.HrFileType2)
.WithMany()
.HasForeignKey(c => c.HrFileTypeId);
}
}
答案 1 :(得分:0)
您是否尝试过列出其他文件类型?
public class HrFileType
{
[Key]
public int Id { get; set; }
[Display(Name = "Dosya Adı")]
public int Name { get; set; }
public List<HrFileType> RelatedTypes { get; set; }
}
然后在DbContext中使用Entity Frameworks流畅的API,尝试显式声明多对多的地图。
modelbuilder.Entity<HrFileType>().HasMany(x => x.RelatedTypes).WithMany();
我很想知道这是否有效。如果没有某种父类,这是我能想到的唯一合理的解决方案。