在MVC Web API中声明外键关系

问题描述 投票:0回答:2

我无法在MVC WEB API中建立简单的外键关系。 我对它的工作方式非常困惑。 经过几个小时的尝试,现在我很困惑。

我有3个模型类:Task,TaskSubtype和Account

Tasksubtype在创建时具有一个accountID和TaskSubtypeId:

public class Task
{

    public int id { get; set; }
    [Key]
    public Guid TaskId { get; set; }
    [ForeignKey("TaskSubType")]
    public  Guid TaskSubTypeId { get; set; }
    [ForeignKey("Account")]
    public  Guid UserId { get; set; }
}

 public class Account
    {   
        public int Id { get; set; }
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public Guid UserId { get; set; }

    }

   public class TaskSubType
    {

        public int id { get; set; }
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public Guid SubTaskID { get; set; }
        public String Name { get; set; }


    }

我做错了什么?

entity-framework entity-framework-4 ef-code-first
2个回答
1
投票

有一个伟大的答案在这里

但基本上:比如说如果您有一个Order类,添加一个引用模型中另一个类的属性,例如Customer应该足以让Entity Framework知道其中存在关系:

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

    // Some other properties

    // Foreign key to customer
    public virtual Customer Customer { get; set; }
}

0
投票

如果要使用id作为记录标识符,请勿为此使用GUID(反之亦然)。 像这样(假设您先使用EF Code):

public class Task
{

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

    [ForeignKey("TaskSubTypeId")]
    public  int TaskSubTypeId { get; set; }

    [ForeignKey("AccountId ")]
    public  int AccountId { get; set; }
}

public class Account
{   
    [Key]
    public int Id { get; set; }

}

public class TaskSubType
{

    [Key]
    public int id { get; set; }
    public String Name { get; set; }

}

希望这可以帮助

© www.soinside.com 2019 - 2024. All rights reserved.