我在MVC3中有一个基本问题。我开始为我的项目写出模型。我理解模型在我的关系数据库层中的表格。如何将类属性(表中的字段)指定为FK。我知道PK的[Key]限定符。例如:
public class Class1
{
[Key]
public int MyID { get; set; }
public string myDes {get;set;}
}
在上面的示例中,MyId是Class1中的PK。如何在另一个类中使用此MyId并将其用作FK。
编辑:这是正确的吗?public class Class2
{ [键] public int SecondID {get;组; }
[ForeignKey("MyId")]
public string MyId{ get; set; }
}
Class1和Class2有两个不同的.cs文件。
答案 0 :(得分:1)
存储关联记录的实例(或一对多或多对多关系的关联记录列表)。
public MyOtherObject MyObject { get; set; }
这可能会根据您将数据保存到数据库的方式而有所改变,但通常这是OO方式。
我使用EF 4.1 Code First执行此操作,生成的DB在关联表中包含一个外键。
编辑以响应您的最新评论(关于ForeignKeyAttribute),以便我可以在答案中使用更好的代码格式:
根据ForeignKeyAttribute
(http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.foreignkeyattribute(v=vs.103).aspx#Y198)的MSDN条目,您传递到ForeignKeyAttribute
的名称是相应的导航属性或外键属性的名称同一个班级。
例如:
public class MyClass
{
// This is a "Navigation Property"
public MyOtherClass ForeignObject { get; set; }
// This is a "Foreign Key Property"
[ForeignKey("ForeignObject")]
public int ForeignObjectID { get; set; }
}
上述代码段中的ForeignKey
属性将ForeignObjectID
属性标识为ForeignObject
属性的外键。您仍然需要在类中使用外部对象的实例。
您还可以在导航属性上使用ForeignKey
属性,只需将外键属性的名称传递给属性:
public class MyClass
{
// This is a "Navigation Property"
[ForeignKey("ForeignObjectID")]
public MyOtherClass ForeignObject { get; set; }
// This is a "Foreign Key Property"
public int ForeignObjectID { get; set; }
}