我正在尝试创建一个SQL
表来包含其他用户信息。
我希望它由VS2012中的迁移(package console => update-database)
创建。
我看到有两个表使用UserId列作为键:Memberships and Users tables.
我正在尝试定义以下类并通过Migrator将其映射到SQL表:
[Key]
[Column(Order = 0)]
[ForeignKey("User")]
public Guid **UserId** { get; set; }
[Key]
[Column(Order = 1)]
[ForeignKey("Category")]
public int CategoryId { get; set; }
public virtual Category Category { get; set; }
**public virtual User User { get; set; }**
虽然在User SQL表中很明显UserId列是键,但是我收到以下错误消息:
\tSystem.Data.Entity.Edm.EdmEntityType: : EntityType 'User' has no key defined. Define the key for this EntityType.
\tSystem.Data.Entity.Edm.EdmEntitySet: EntityType: EntitySet 'Users' is based on type 'User' that has no keys defined.
我在这里缺少什么?可能是Microsoft.VisualBasic.ApplicationServices.User / System.Web.Security.MembershipUser
类不一定以这种方式映射到表,反之亦然,因此UserId
属性未声明为Key dataannotation?
我愿意接受其他解决此问题的方案。
非常感谢!
答案 0 :(得分:0)
我目前正在使用asp.net mvc4和Azure db。
当我想在UserProfile的其他表中使用UserId时。请注意,在AccountModels中有类UserProfile:
[Table("UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
}
现在,假设您的类别是由特定用户创建的,您可以通过以下方式将类别条目链接到用户。
[Table("Category")]
public class Category
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int CategoryId { get; set; }
public UserProfile CreatorUserId { get; set; }
}
否则,您始终可以将UserProfile用作模型。