Я пытаюсь преобразовать все свои классы домена в свободную конфигурацию 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, когда свойства навигации не определены в классе?