【问题标题】:Configuring one to Many relationship in asp.net with Entity Framework 6 with Fluent API在 asp.net 中使用带有 Fluent API 的 Entity Framework 6 配置一对多关系
【发布时间】:2021-01-19 03:15:00
【问题描述】:

我在迁移前遇到错误提示

Book中的导航属性quotes配置有冲突 自治市

请帮忙!

public partial class Book 
{ 
    public virtual ICollection<Quote> Quotes { get; set; } 
} 

public partial class Quote
{ 
    public virtual Book Book { get; set; }  
}

//Fluent Api 

modelBuilder.Entity<Quote>() 
    .HasOptional(b => b.Book); 

modelBuilder.Entity<Book>() 
    .HasMany<Quote>(s => s.Quotes) 
    .WithRequired(s => s.Book) 
    .HasForeignKey<int>(s => s.QuoteBookID);

【问题讨论】:

  • .WithRequired(s =&gt; s.Book) 删除这个

标签: c# asp.net entity-framework ef-code-first


【解决方案1】:

你写过

modelBuilder.Entity<Quote>() 
    .HasOptional(b => b.Book); 

modelBuilder.Entity<Book>() 
    .HasMany<Quote>(s => s.Quotes) 
    .WithRequired(s => s.Book) 
    .HasForeignKey<int>(s => s.QuoteBookID);

这描述了一种自相矛盾的事态。 Quote.Book 不能既是必需的又是可选的,所以我们必须下定决心。

如果需要,那么

modelBuilder.Entity<Book>() 
    .HasMany(s => s.Quotes) 
    .WithRequired(s => s.Book)
    .HasForeignKey(s => s.QuoteBookID);

是所有必要的。我们不需要配置可选性

那它是可选的

modelBuilder.Entity<Book>() 
    .HasMany(s => s.Quotes) 
    .WithOptional(s => s.Book)
    .HasForeignKey(s => s.QuoteBookID);

请注意,我删除了显式类型参数,因为它们是不必要的。

我们可以进一步清理并编写

modelBuilder.Entity<Book>() 
    .HasMany(s => s.Quotes) 
    .WithOptional() // or .WithRequired()
    .HasForeignKey(s => s.QuoteBookID);

因为没有必要过于具体

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-08
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 2015-05-11
    • 1970-01-01
    相关资源
    最近更新 更多