我有一个Accounts表,其中包含银行帐户。当用户选择一个帐户时,该帐户可能使用的预算是默认的。因此,在“帐户”表中,我有一个DefaultBudget
列。
此外,在我的情况下,预算与帐户相关联。也就是说,在预测未来余额时,用户将预算分配给帐户。
有两个单独的链接。您需要先拥有一个帐户,然后才能为其创建预算(创建预算,分配帐户-必填)。但是您可以随后修改帐户,并分配默认预算-不需要)。
所以,我的代码第一个帐户:
internal class Account : EntityAudit
{
[Key, Required, Column(Order = 0)]
public int Id { get; set; }
[Required, Column(Order = 1)]
public Guid ExternalId { get; set; }
[Required, Column(Order = 2)]
public AccountTypes AccountTypeId { get; set; }
public decimal? OpeningBalance { get; set; }
[Column(TypeName = "date")]
public DateTime? DateOpened { get; set; }
[Required, Column(Order = 3)]
public UserAccount UserAccount { get; set; }
[Required, Column(Order = 4)]
public string Name { get; set; }
[Required]
public bool IsFavourite { get; set; }
public Subcategory DefaultSubCategory { get; set; }
public Budget DefaultBudget { get; set; }
[Required]
public bool IsActive { get; set; }
}
此处的关键字段为public Budget DefaultBudget { get; set; }
。因此,这不是必需的,我希望可以在“预算”表中创建一个FK。
我的预算代码第一个对象:
internal class Budget : EntityAudit
{
[Required, Key, Column(Order = 0)]
public int Id { get; set; }
[Required, Column(Order = 1)]
public Guid ExternalId { get; set; }
[Required]
public BudgetType BudgetType { get; set; }
[Required, Column(Order = 2)]
public string Name { get; set; }
[Required, ForeignKey("PrimaryAccountId")]
public Account PrimaryAccount { get; set; }
[Required]
public DateTime StartDate { get; set; }
public DateTime? EndDate { get; set; }
[Required, Column(Order = 3)]
public UserAccount UserAccount { get; set; }
[Required, Column(Order = 4)]
public decimal AllowanceAmount { get; set; }
public virtual List<TransactionLine> TransactionLines { get; set; }
}
在这个对象中,我有public Account PrimaryAccount { get; set; }
。注意,这是必需的,我试图指定FK名称。
但是,当我生成迁移时,最终得到的表结构是:
它在两个表之间创建了1:1关系。我不确定为什么会这样以及如何解决它。
预算可以链接到多个帐户,许多帐户可以链接到预算。听起来很多很多-但这还不太正确。它应该已经在帐户表中创建了DefaultBudgetId
。