Jun*_*ior 5 c# asp.net-mvc entity entity-framework asp.net-mvc-5
我有一个ASP.NET MVC 5/C#项目.在我的项目中,我有两个模型,Rule和MenuItem.MenuItem有一个引用的外键Rule.并且Rule有一个引用的外键MenuItem.
值得一提的是,我的模型在模型名称中有一个前缀.另外,我使用数据库第一种方法.
我希望能够使用所需的规则获取MenuItem,.Include(...)并且我希望能够使用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; }
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试拉出包含必需规则的菜单项时,我收到以下错误
在模型生成期间检测到一个或多个验证错误:MenuItem_RequiredRule_Target :: Multiplicity在关系'MenuItem_RequiredRule'中的角色'MenuItem_RequiredRule_Target'中无效.由于"从属角色"属性不是关键属性,因此从属角色的多重性的上限必须为"*".
我相信这个错误是由于我的模型之间的循环引用.但是,我需要能够以任何方式访问这两个属性.
我该如何解决这个问题?
实体框架应该足够聪明,能够弄清楚这是 1 到 0/1 的关系。未经测试,但这应该有效吗?
public partial class Rule
{
[Key, ForeignKey("Item")]
public string ModuleId { get; set; }
public string Name { get; set; }
public virtual MenuItem Item { get; set; }
}
public partial class MenuItem
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public string Id { get; set; }
public string Name { get; set; }
public virtual Rule RequiredRule { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
596 次 |
| 最近记录: |