2014-02-13 180 views
3

我有两个表外键诠释MVC

State(StateID int,StateName string) 

City(CityID int,StateID int,CityName string) 

我对MVC4正与代码首先approach.The代码,我使用国家模型 -

对于国家:

[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;} 

此代码创建国家Table.All的STATEID一个ForeignKey我想工作,但正如我在MVC是新的我得到了下面的代码也在做同样的事情。

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

这让我迷惑律什么是做正确的方式。我们应该在ForeignKey的注释通过模型类的名字国家或者它应该是物业即STATEID 我去通过已经在这里提出的关于这个注释的各种问题。但是我仍然不确定上述代码的区别。 任何建议,将不胜感激。

回答

7

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

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

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

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

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

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

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