【发布时间】:2017-10-16 09:01:33
【问题描述】:
我有一个 ASP.NET MVC 5/C# 项目。在我的项目中,我有两个模型,Rule 和 MenuItem。 MenuItem 有一个引用 Rule 的外键。而Rule 有一个引用MenuItem 的外键。
值得一提的是,我的模型在模型名称中有一个前缀。另外,我使用的是数据库优先方法。
我希望能够使用 .Include(...) 获取具有所需规则的 MenuItem,并且我希望能够使用 MenuItem 获取规则
这是我的模型
[Table("Rules")]
public class PrefixRule
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public string Id { get; set; }
[ForeignKey("Item")]
public int ModuleId { get; set; }
public string Name { get; set; }
public virtual PrefixMenuItem Item { get; set; }
}
[Table("MenuItems")]
public class PrefixMenuItem
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public string Id { get; set; }
[ForeignKey("RequiredRule")]
public int? RequiredRuleId { get; set; }
public string Name { get; set; }
public virtual PrefixRule RequiredRule { get; set; }
}
但是,当我尝试拉取包含所需规则的菜单项时,出现以下错误
在模型过程中检测到一个或多个验证错误 generation:MenuItem_RequiredRule_Target: : 多重性无效 在关系中的角色“MenuItem_RequiredRule_Target”中 'MenuItem_RequiredRule'。因为从属角色属性不是 关键属性,多重性的上限 从属角色必须是“*”。
我相信这个错误是由于我的模型之间的循环引用。但是,无论哪种方式,我都需要能够访问这两个属性。
我该如何解决这个问题?
【问题讨论】:
-
实体中的主键在哪里?
Because the Dependent Role properties are not the key properties -
Ehm 有点跑题了,但我建议您使用 Guids 而不是整数作为 ID。 msdn.microsoft.com/en-us/library/…
标签: c# asp.net-mvc entity-framework asp.net-mvc-5 entity