我的问题看起来很简单。我需要实现数据库中项目之间的关系。例如:诸如计算机和软件之类的实体之间的关系向用户显示计算机存储特定软件并且类似地 - 在特定计算机中安装软件。我想我应该实现一个具有源代码ID和目标ID或类似的实体。我在EntityFramework 6中首先使用代码编写了一些代码。这里有两个类:实体框架中的实体之间的双重关系6
public class ConfigurationItem
{
public int Id { get; set; }
public String Name { get; set; }
public String DeploymentState { get; set; }
public String IncidentState { get; set; }
[DataType(DataType.MultilineText)]
public String Description { get; set; }
[DataType(DataType.MultilineText)]
public String Note { get; set; }
public virtual ICollection<Relationship> Relationship { get; set; }
}
public class Relationship
{
[Key]
public int RelationshipId { get; set; }
[ForeignKey("ConfigurationItem")]
public int SourceId { get; set; }
[ForeignKey("ConfigurationItem")]
public int TargetId { get; set; }
public String Type { get; set; }
public virtual ConfigurationItem Source { get; set; }
public virtual ConfigurationItem Target { get; set; }
}
此解决方案不起作用。我需要一个提示或什么东西,我应该尝试使其正常工作。 EF引发关于外键的错误:
类型'cms_1.Models.Relationship'上属性'SourceId'上的ForeignKeyAttribute无效。在依赖类型“cms_1.Models.Relationship”上找不到导航属性“ConfigurationItem”。名称值应该是有效的导航属性名称。
当我尝试解决它时,EF会抛出关于级联删除的错误。我知道如何禁用它,但我只是不想。我需要一个适当的解决方案,但我认为我不知道如何做一个代表给定场景的模型。
简单地说 - 我需要在实体“B”中存储实体“A”的两个外键。这怎么可能?
您使用的是迁移吗? – Tacoman667
是的,几分钟前我找到了解决方案。我在ConfigurationItem中编写了两个导航属性,代码运行成功,但我不知道它是否以我希望它工作的方式完成 – matB