0
我正在处理借贷系统。 我有2张桌子。贷款和工具。一笔贷款可以有更多的工具。数据库设计,one2many,表之间的双向依赖关系
public class Loan
{
[Key]
public int LoanId { get; set; }
[Required]
public DateTime WhenBorrowed { get; set; }
public DateTime? WhenReturned { get; set; }
// foreign key to Tool
public virtual ICollection<Tool> Tools { get; set; }
}
public class Tool
{
// Primary key
public int ToolId { get; set; }
[Required]
public string Name { get; set; }
// foreign key to Loan
public int? LoanId { get; set; }
public virtual Loan Loan { get; set; }
}
我要问这样的问题:
- 工具的可用性 - 借/未借。
我通过在工具表中使用LoanId来解决这个问题,检查它是否为null。
历史交易
在这里,我有一个问题。该icollections似乎只包含Tool table的外键。因此,当我将LoanId设置为空(表示该工具已返回并且可以再次借用)时,我将失去历史记录。 我应该如何解决这个问题。我应该在贷款表中定义另一个外键吗?就像这样:
// foreign key to Tool public IList<int> ToolId { get; set; } public virtual Tool Tool { get; set; }
好像在国外钥匙给我循环依赖。什么是实现所需功能的正确途径?
感谢您的任何建议。
感谢您的快速回复。也许最好使用第三个表...为此。 – user3463614
基本上,它必须是多对多的关系,而不是一对多...... – user3463614