我有3個實體:Member
,AuthenticationToken
和Email
。EF 4.1代碼優先:如何設計和映射這些實體?
- 每個
Member
5具有許多AuthenticationTokens
- 每個
AuthenticationToken
可具有一個或零Email
- 每個
Member
可以具有零個或一個PrimaryEmail
(從Emails
表)。 真正的PrimaryEmail
是相關Email
的AuthenticationToken
小號的之一,所以我有:
public class Member {
public int MemberId { get; set; }
public int? PrimaryEmailId { get; set; }
public virtual Email PrimaryEmail { get; set; }
public virtual ICollection<AuthenticationToken> AuthenticationTokens { get; set; }
}
public class AuthenticationToken {
public int AuthenticationTokenId { get; set; }
public int MemberId { get; set; }
public virtual Member Member { get; set; }
public virtual Email Email { get; set; }
}
public class Email {
public int EmailId { get; set; } // is same as AuthenticationTokenId that the email associated with it
}
隨着設計我上面所解釋的,我可以添加會員和AuthenticationToken,但是當我要附上發送電子郵件給會員或AuthenticationToken(或兩者)我給出此錯誤:
The INSERT statement conflicted with the FOREIGN KEY constraint etc.
此設計是否正確? 我如何設計我的表格(和實體)來達到我的目的? 我怎樣才能在我的實體在代碼優先?請問你有什麼想法嗎?
是否將電子郵件中的Id配置爲不自動生成? –
是的!你認爲這種設計是正確的嗎? –
你還配置了EF,EmailId不是自動生成的嗎? –