MVC3中的模型问题

发布于 2024-11-15 17:46:44 字数 537 浏览 1 评论 0原文

我有一个关于 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

{ [钥匙] 公共 int SecondID { 获取;放; 。

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

Class1

和 Class2 位于两个不同的 .cs 文件中

I have a basic question in MVC3. I am starting to write out Models for my project. I understand Models are in a way tables in my relational database layer. How do I specify a class attribute (field in a table) as a FK. I know the [Key] qualifier for PKs. For example :

 public class Class1
{
    [Key]
    public int MyID { get; set; }
    public string myDes {get;set;}

}

In the above example MyId is a PK in Class1. How do I use this MyId in a another class and use it as FK.

EDIT: Is this correct?

public class Class2

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

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

}

Class1 and Class2 are in two different .cs files.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

心碎无痕… 2024-11-22 17:46:44

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

public MyOtherObject MyObject { get; set; }

这可能会根据您将数据持久保存到数据库的方式而改变,但通常这是面向对象的方法。

我使用 EF 4.1 Code First 执行此操作,生成的数据库包含关联表中的外键。


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

根据ForeignKeyAttribute的MSDN条目(http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.foreignkeyattribute(v=vs.103).aspx#Y198),您传递的名称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; }
}

Store an instance of the associated record (or a list of associated records for one-to-many or many-to-many relationships).

public MyOtherObject MyObject { get; set; }

This may change based how you are persisting the data to the DB, but in general this is the OO way to do it.

I do this using EF 4.1 Code First, and the resulting DB contains a Foreign Key into the associated table.


Edit in response to your latest comment (regarding the ForeignKeyAttribute) so I can use the better code formatting in the answer:

According to the MSDN entry for the ForeignKeyAttribute (http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.foreignkeyattribute(v=vs.103).aspx#Y198), the name you pass into the ForeignKeyAttribute is the name of the corresponding navigation property or foreign key property on the same class.

For example:

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

The ForeignKey attribute in the above code snippet identifies the ForeignObjectID property as a foreign key for the ForeignObject property. You will still need an instance of the foreign object in your class.

You can also use the ForeignKey attribute on the navigation property, just pass in the name of the foreign key property to the attribute:

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; }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文