【发布时间】:2011-11-13 10:39:04
【问题描述】:
这些是我的模型类:
public class Organization
{
public Organization()
{
}
[DisplayName("Organization Id")]
public int OrganizationId { get; set; }
[StringLength(128)]
[DisplayName("Organization Name")]
public string Name { get; set; }
}
public class User
{
public User()
{
Roles = new List<Role>();
}
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
public Guid UserGuid { get; set; }
[StringLength(25)]
public string FirstName { get; set; }
[StringLength(25)]
public string LastName { get; set; }
public virtual List<Role> Roles { get; set; }
public int OrganizationId { get; set; }
[ForeignKey("OrganizationId")]
public virtual Organization Organization { get; set; }
}
这是我的代码:
Organization organization = new Organization { Name = "Test", };
context.Organizations.Add(organization);
我明白了:
INSERT 语句与 FOREIGN KEY 约束冲突 \"组织_用户\"。数据库发生冲突 \"SampleDB\",表 \"dbo.Organizations\",列 'OrganizationId'。\r\n语句已终止。
这不是很奇怪吗?我只是添加一个组织。它可能有什么问题?
PS:我的用户表确实有 OrganizationId 是外键并指向 Organization 表。到目前为止一切顺利,但为什么抛出异常?我正在添加一个主 Organization 记录。这如何违反外键约束?
【问题讨论】:
-
如果我不得不猜测,OrganizationId 是外键。基本上意味着该组织不存在于它所引用的任何表中。
-
外键
Organization_Users在哪里?您没有在代码中显示它。是Organization表的字段吗? -
@Otiel:是Sql Server自动生成的外键关系名称。
标签: c# entity-framework entity-framework-4.1