#c# #.net-core #entity-framework-core #entity-framework-migrations
#c# #.net-core #entity-framework-core #entity-framework-миграции
Вопрос:
Как мне разрешить это EntityTypeBuilder не содержит определения для «Навигации»?
Только что добавлена миграция.
Проект: библиотека классов .Net statndard 2.
modelBuilder.Entity("ExpenseManager.DAL.Entities.Ex_paymentretirement", b =>
{
b.HasOne("ExpenseManager.DAL.Entities.Ex_requisitionpayment", "Ex_requisitionpayment")
.WithOne("Ex_paymentretirement")
.HasForeignKey("ExpenseManager.DAL.Entities.Ex_paymentretirement", "RequisitionPaymentId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Ex_requisitionpayment");//here*****
});
modelBuilder.Entity("ExpenseManager.DAL.Entities.Ex_requisitiondetails", b =>
{
b.HasOne("ExpenseManager.DAL.Entities.Ex_classificationsetup", "Ex_classificationsetup")
.WithMany("Ex_requisitiondetails")
.HasForeignKey("ClassificationsetupId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("ExpenseManager.DAL.Entities.Ex_requisitionote", "ex_Requisitionote")
.WithMany("Ex_requisitiondetails")
.HasForeignKey("RequisitionId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Ex_classificationsetup");//here*****
b.Navigation("ex_Requisitionote");//here*****
});
Комментарии:
1.
Navigation
если функция EF Core 52. если я понял, что вы подразумеваете под историей, я сделал это перед добавлением миграции в метод OnModelCreating из моего класса datacontext onModelmodelBuilder . Сущность<Ex_requisitionote>() .hasOne(a => a.Ex_requisitionpayment) . WithOne(b => b.Ex_requisitionote) . HasForeignKey<Ex_requisitionpayment>(b => b.RequisitionId);
3. Я попытался выполнить сопоставление объектов один к одному, используя fluent API
4. О, большое спасибо, я только что понизил рейтинг
Ответ №1:
Метод Navigation
был добавлен в .NET 5: https://docs.microsoft.com/en-us/dotnet/api/microsoft.entityframeworkcore.metadata.builders.entitytypebuilder.navigation?view=efcore-5.0
В EFCore 5 NavigationBuilder
предназначен для настройки свойств отношений, таких как:
modelBuilder.Entity<Blog>()
.HasMany(b => b.Posts)
.WithOne();
modelBuilder.Entity<Blog>()
.Navigation(b => b.Posts)
.UsePropertyAccessMode(PropertyAccessMode.Property);
Он также содержит методы HasField
, HasAnnotation
, IsRequired
.
Чтобы устранить проблему, вам необходимо перейти на EFCore 3.1 и повторно выполнить миграции
Комментарии:
1. я только что попробовал удалить строку, это то, что я получаю, метод не найден: «Microsoft. EntityFrameworkCore.Migrations. Операции. Строители. OperationBuilder
1<Microsoft.EntityFrameworkCore.Migrations.Operations.AddColumnOperation> Microsoft.EntityFrameworkCore.Migrations.Operations.Builders.ColumnsBuilder.Column(System.String, System.Nullable
1<Логическое значение>, Система. Обнуляемый1<Int32>, Boolean, System.String, Boolean, System.Object, System.String, System.String, System.Nullable
1<Логическое значение>, Системный. Строка)’.2. Вы написали код миграции вручную или просто запустили какой-то инструмент? Похоже, ваш код миграции сгенерирован для EFCore 5.0, но вы используете другую версию.
3. Я понизил рейтинг до EFCore 3.1 Пожалуйста, сделайте мне одолжение, отредактировав свой ответ