MVC3中的模型问题

时间:2011-06-15 17:27:35

标签: database-design asp.net-mvc-3 class-design ef-code-first models

我在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文件。

1 个答案:

答案 0 :(得分:1)

存储关联记录的实例(或一对多或多对多关系的关联记录列表)。

public MyOtherObject MyObject { get; set; }

这可能会根据您将数据保存到数据库的方式而有所改变,但通常这是OO方式。

我使用EF 4.1 Code First执行此操作,生成的DB在关联表中包含一个外键。


编辑以响应您的最新评论(关于ForeignKeyAttribute),以便我可以在答案中使用更好的代码格式:

根据ForeignKeyAttributehttp://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; }
}