MVC中的外键注释

use*_*852 3 annotations foreign-keys asp.net-mvc-4

我有两张桌子

State(StateID int,StateName string)

City(CityID int,StateID int,CityName string)
Run Code Online (Sandbox Code Playgroud)

我正在使用代码第一种方法开发MVC4.我用于城市模型的代码是 -

对于州:

[Key]

public int StateID{get;set;}

public string StateName{get;set;}
Run Code Online (Sandbox Code Playgroud)

对于城市:

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


[ForeignKey("State")]
public string StateID{get;set;}
public virtual State State{get;set;}
Run Code Online (Sandbox Code Playgroud)

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

[ForeignKey("StateID")]
public string Stateid{get;set;}
public virtual State StateID{get;set;}
Run Code Online (Sandbox Code Playgroud)

这让我很难搞清楚做什么的正确方法...我们应该在ForeignKey Annotation中传递Model Class名称,即状态或它应该是属性,即StateID 我经历过有关此Annotation的各种问题.但我仍然不确定上述代码的区别.任何建议将不胜感激.

HTX*_*TX9 8

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

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

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

public virtual State State { get; set; } // This is your navigation property
Run Code Online (Sandbox Code Playgroud)

这是使用该属性的正确方法.在"State"您传递到属性对应于导航属性名称.

在第二个示例中,您的导航属性已命名StateID,这[ForeignKey("StateID")]也是该实例中的原因.

有关更多信息,请查看MSDN文档.