EntityTypeBuilder не содержит определения для «Навигации»

#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 5

2. если я понял, что вы подразумеваете под историей, я сделал это перед добавлением миграции в метод 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 Пожалуйста, сделайте мне одолжение, отредактировав свой ответ