Свободный API для генерации внешнего ключа, который не дает такой же результат, как DataAnnotation - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь преобразовать все свои классы домена в свободную конфигурацию API, чтобы удалить из них все аннотации данных.

Я немного борюсь с конфигурациями внешнего ключа.

Вследующий класс

public class AccountPnL
{
    public int AccountPnlId { get; set; }

    [ForeignKey("Account")]
    public int AccountId { get; set; }
    public Account Account { get; set; }

    public DateTime TradeDate { get; set; }

    public decimal? TotalCommodityPnL { get; set; }
    public decimal? TotalCommodityOptionsPnL { get; set; }
    public decimal? TotalEquityPnL { get; set; }
    public decimal? TotalEquityOptionsPnL { get; set; }
}

аннотация данных при миграции выдает следующее:

table.ForeignKey(
     name: "FK_AccountPnLs_Accounts_AccountID",
     column: x => x.AccountID,
     principalSchema: "BatlCtx",
     principalTable: "Accounts",
     principalColumn: "AccountId",
     onDelete: ReferentialAction.Cascade);

Я пытаюсь создать свободный код API для получения того же результата, 1 учетная запись на 1 отношение AccountPnL,Я перепробовал множество методов, в том числе то, что есть в документации Microsoft по Fluent API, но кажется, что она устарела, так как статьи написаны с 2016 года. (Т.е. .Entity больше не является методом построения)

Моя последняя попыткапосле комментирования аннотации данных

            builder.HasOne(u => u.Account)
               .WithMany(v => v.AccountPnLs)
               .HasForeignKey(x => x.AccountId)
               .HasConstraintName("FK_AccountPnLs_Accounts_Id");

создает тот же код в миграции, что и DataAnnotation, но я прочитал, что свойства больше не требуются в классе, если он настроен с использованием свободного API.

Как вы можете ссылаться на Account и AccountId, если эти свойства больше не находятся в классе?

Есть ли другой способ кодировать свободный API, когда свойства навигации не определены в классе?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...