【发布时间】:2020-03-09 20:58:37
【问题描述】:
在 Entity Framework Core 中添加具有多个一对一关系的实体时遇到问题。根据this 问题,我有以下几点:
public class Article
{
public int Id { get; set; }
public int? PreviousId { get; set; }
public Article Previous { get; set; }
public int? NextId { get; set; }
public Article Next { get; set; }
}
在DbContext 的OnModelCreating 中,就像我一样:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.HasDefaultSchema("ab");
modelBuilder.ApplyConfiguration(new ArticleEntityTypeConfiguration());
}
public class ArticleEntityTypeConfiguration : IEntityTypeConfiguration<Article>
{
public void Configure(EntityTypeBuilder<Article> builder)
{
builder.ToTable("Articles");
builder.HasKey(table => table.Id);
builder.Property(table => table.Id).ValueGeneratedOnAdd();
builder.HasOne(table => table.Previous).WithOne().HasForeignKey<Article>(table => table.PreviousId);
builder.HasOne(table => table.Next).WithOne().HasForeignKey<Article>(table => table.NextId);
}
}
添加新文章时,我收到堆栈溢出错误,应用程序崩溃。我添加一篇文章,代码如下:
public Task AddNewArticleAsync(Article article)
{
var newArticle = new Article();
article.Next = newArticle;
newArticle.Previous = article;
await _dbContext.Programs.AddAsync(article);
}
你知道我怎样才能避免这个错误吗?谢谢!
【问题讨论】:
-
不确定这是否有帮助,但您是否尝试过InversePropertyAttribute?
标签: c# entity-framework asp.net-core .net-core entity-framework-core