我应该如何声明与默认创建的MVC .NET Memberships / Users表的外键(UserId)关系?

时间:2012-09-03 19:49:28

标签: asp.net-mvc entity-framework-4.1 ef-migrations

我想到的是做这样的事情:

public class UserProfile
{
    [Key]
    [Column(Order = 0)]
    [ForeignKey("User")]
    public Guid UserId { get; set; }

    public virtual User User { get; set; }

    // Additional user info
}

但是我收到了这个错误:

  

\ tSystem.Data.Entity.Edm.EdmEntityType :: EntityType'用户'没有密钥   定义。定义此EntityType的键。   \ tSystem.Data.Entity.Edm.EdmEntitySet:EntityType:EntitySet'Users'   基于没有定义键的“用户”类型。

我错过了什么?是不是还要编写一个自动迁移到sql表的类(Code First)?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果不清楚什么是主键,则只需要[Key]注释。但惯例是它以Id结尾的类名,你需要User类中的UserId属性。所以恕我直言,我认为它应该是这样的:

    public class UserProfile
    {
        [Key]
        public UserProfileId
        public Guid UserId { get; set; }
      [ForeignKey("UserId")]
        public virtual User User { get; set; }
        // Additional user info
    }
  

我错过了什么?反正不是写一个类   自动迁移到sql表(代码优先)?

是的,当您的代码需要使用它将创建的类时,或者您可以使用scaffolding。 我现在使用迁移工具强制快速创建所有表。参见例如MSDN article about migration tool Blog about migration