【发布时间】:2011-10-06 08:04:54
【问题描述】:
我有 3 个实体:Member、AuthenticationToken 和 Email。
- 每个
Member可能有很多AuthenticationTokens - 每个
AuthenticationToken可能有一个或零Email - 每个
Member可能有零或一个PrimaryEmail(来自Emails表)。 真的PrimaryEmail是AuthenticationTokens 的关联Email之一
所以我有:
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
}
通过我上面解释的设计,我可以添加成员和身份验证令牌,但是当我想将电子邮件附加到成员或身份验证令牌(或两者)时,我给出了这个错误:
INSERT 语句与 FOREIGN KEY 约束等冲突。
这个设计对吗??? 如何设计我的表(和实体)以实现我的目的? 以及如何在代码优先中映射我的实体?请问你有什么想法吗?
【问题讨论】:
-
电子邮件中的 ID 是否配置为不自动生成?
-
是的!你觉得这个设计对吗?
-
您是否还配置了不自动生成 EmailId 的 EF?
-
使用 SQL 分析器并检查它在插入电子邮件时使用了什么插入命令。
标签: entity-framework-4.1 ef-code-first entity-relationship navigation-properties