c# - 首先使用 ASP.NET MVC 4 迁移代码的foreignkey

标签 c# asp.net-mvc asp.net-mvc-4 ef-code-first foreign-keys

如何在计算机类的 ID 上创建外键到下面的 User 类中?

用户表:

[Table("User")]
class User{
 [Key]
 public int idUser;
 public int idComputer; //ForeignKey
}

电脑 table :

[Table("Computer")]
class Computer{
 [Key]
 public int idComputer;
}

如何在这些类之间建立一对多关系和一对一关系?

最佳答案

要进行设置,以便一个用户拥有多台计算机,而一台计算机拥有一个用户,您可以这样做:

class User {
    public int idUser {get;set;}

    public virtual ICollection<Computer> Computers {get;set;}
}

class Computer {
    public int idComputer {get;set;}

    public int UserID {get;set;} // automatically detected as a ForeignKey since the format it [classname]ID
    public virtual User User {get;set;}
}

要进行设置以使一台计算机拥有多个用户并且一个用户拥有一台计算机,您可以执行以下操作:

class User {
    public int idUser {get;set;}

    public int ComputerID {get;set;}
    public virtual Computer Computer {get;set;}
}

class Computer {
    public int idComputer {get;set;}

    public virtual ICollection<User> Users {get;set;}
}

进行设置以使用户拥有一台计算机:

class User {
    public int ID {get;set;}

    public virtual Computer Computer {get;set;}
}

class Computer {
    public int ID {get;set;}

    [Required]
    public int UserID {get;set;}
    public virtual User User {get;set;}
}

[Required] 标记应消除有关一对一关系的任何错误

顺便说一句,EF Code First 的重点是让事情变得 super 简单、快速和容易,但是当您不使用它提供的某些功能时,它会大大削弱它,并且您必须执行更多手动操作工作,这可能会导致错误。

Here's a tutorial on how to do code-first. I recommend you read up on it.

好的,我重新阅读了您原来的问题。在相同的两个类之间不能同时拥有两者(一对一和一对多),您可以拥有一对一(即,一个用户有一台计算机,一台计算机有一个用户)或一对多(即,一个用户有许多计算机,而一台计算机有一个用户,或者一台计算机有许多用户,而一个用户有一台计算机。)这是一种或另一种,而不是两者兼而有之。您认为这是可能的事实强化了我的说法,即您确实需要阅读该教程或阅读简单的关系数据库结构

关于c# - 首先使用 ASP.NET MVC 4 迁移代码的foreignkey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23062717/

相关文章:

c# - 将 "raw"XML 字符串插入 XElement

c# - 如何在 ListView 中显示实际图像而不是其位置?

asp.net-mvc - Infragistics 隐藏列更新

c# - HTML 帮助器中的第二个 lambda 表达式引发 CS0411

asp.net-mvc-4 - Cors 错误 - MVC 和 Web API

asp.net-mvc-4 - 为什么这会返回 System.Threading.Tasks.Task`1[System.Web.Mvc.ActionResult]

c# - 为什么图像在我的按钮内仅部分可见?

c# - 如何通过IDictionary进行枚举

asp.net-mvc - 如何在.net mvc中使用私有(private)操作方法?

asp.net-mvc-4 - 模拟 WebSecurity 提供者