MVC中的外键注释

时间:2014-02-13 21:25:50

标签: asp.net-mvc-4 annotations foreign-keys

我有两张桌子

State(StateID int,StateName string)

City(CityID int,StateID int,CityName string)

我正在使用代码优先的方法开发MVC4。我用于 State City 模型的代码是 -

状态:

[Key]

public int StateID{get;set;}

public string StateName{get;set;}

对于城市:

[Key]
public int CityID{get;set;}


[ForeignKey("State")]
public string StateID{get;set;}
public virtual State State{get;set;}

这段代码正在为状态表的StateID创建一个外键。我想要的只是工作,但由于我是MVC的新手,我得到以下代码也做同样的事情。

[ForeignKey("StateID")]
public string Stateid{get;set;}
public virtual State StateID{get;set;}

这让我很难搞清楚做什么的正确方法...我们应该在 ForeignKey Annotation 中传递Model Class名称,即 State ,或者它应该是Property ie的 STATEID 我在这里已经讨论了有关此Annotation的各种问题。但我仍然不确定上述代码的区别。 任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:8)

使用ForeignKey属性时,传递外键应指向的导航属性的名称。

所以,在你的第一个例子中,你有:

[ForeignKey("State")]
public string StateID { get; set; }

public virtual State State { get; set; } // This is your navigation property

这是使用该属性的正确方法。传递给属性的"State"对应于导航属性名称。

在第二个示例中,您的导航属性名为StateID,这就是[ForeignKey("StateID")]在该实例中也起作用的原因。

请查看MSDN文档以获取更多信息。