2012-09-03 3 views
1

Я пытаюсь создать таблицу SQL, чтобы добавить дополнительную информацию о пользователе. Я хочу, чтобы он был создан Миграции в VS2012 (package console => update-database).Код элемента Entity Framework Сначала - использование ключа UserId в таблице Memberships/Users как Foreignkey в пользовательской таблице

Я вижу, что есть две таблицы с использованием колонки USERID в качестве ключевых: Memberships and Users tables.

Я пытаюсь определить следующий класс и отобразить его в таблице SQL через Migrator:

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

Хотя очевидно, в таблице 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

В настоящее время я использую asp.net mvc4 с Azure db.

Когда я хочу использовать UserId в других таблицах из UserProfile. Обратите внимание на 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 в качестве модели.

 Смежные вопросы

  • Нет связанных вопросов^_^