如何解决在带有Fluent API的Entity Framework 6中配置ASP.NET中的一对多关系
我在迁移之前遇到错误
Book中的导航属性引号配置为有冲突 自治市
请帮助!
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);
解决方法
您写了
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);
是所有必要的。我们不需要配置可选性
id,它是可选的
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);
因为不需要过于具体
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。