我正在尝试为一个表创建审计跟踪,方法是创建该表的副本,并将额外的日期作为主键的一部分。
最终,我希望能够在不通过附加的GiftIdea的情况下引用AuditGiftIdea对象中的Person。因此,我尝试了以下方法:
但我在编译时遇到了“ForeignKey属性重复”的错误。
我该如何完成这个设置?
以下是我想要做的简化示例。
我的实体代码目前如下:
public class Person
{
[Key]
public int ID { get; set; }
public string Name { get; set; }
public DateTime DateOfBirth { get; set; }
}
public class GiftIdea
{
[Key, Column(Order:0), ForeignKey("Person")]
public int PersonID { get; set; }
[Key, Column(Order:1)]
public DateTime RecordDate { get; set; }
public string Description { get; set; }
public string Occasion { get; set; }
//Linked Entities
public virtual Person Person { get; set; }
}
public class AuditGiftIdea
{
[Key, Column(Order:0), ForeignKey("GiftIdea")]
public int PersonID { get; set; }
[Key, Column(Order:1), ForeignKey("GiftIdea")]
public DateTime RecordDate { get; set; }
[Key, Column(Order:2)]
public DateTime AuditRecordDate { get; set; }
public string Description { get; set; }
public string Occasion { get; set; }
//Linked Entities
public virtual GiftIdea GiftIdea { get; set; }
}
最终,我希望能够在不通过附加的GiftIdea的情况下引用AuditGiftIdea对象中的Person。因此,我尝试了以下方法:
public class AuditGiftIdeas
{
[Key, Column(Order:0), ForeignKey("GiftIdea"), ForeignKey("Person")] //Extra Foreign Key
public int PersonID { get; set; }
[Key, Column(Order:1), ForeignKey("GiftIdea")]
public DateTime RecordDate { get; set; }
[Key, Column(Order:2)]
public DateTime AuditRecordDate { get; set; }
public string Description { get; set; }
public string Occasion { get; set; }
//Linked Entities
public virtual GiftIdea GiftIdea { get; set; }
public virtual Person Person { get; set; } //Access to desired object
}
但我在编译时遇到了“ForeignKey属性重复”的错误。
我该如何完成这个设置?