Отображение членства в ASP.NET MVC - PullRequest
0 голосов
/ 01 февраля 2012

Я разрабатываю ASP.NET на C # после выполнения aspnet_regsql в моей базе данных.Я хочу отследить игровые объекты и отобразить их пользователям ... если это возможно, я бы хотел, чтобы у пользователя был список игр, но, очевидно, я не могу включить его в текущую реализацию членства, если я не напишу свою собственную, которую япытаясь избежать.

public List<Game> Games { get; set; }

В MVC, однако, как мне на самом деле отобразить это в другой модели (которая будет использовать ту же базу данных, будет просто другая таблица в этой базе данных).

public class Games
{
    [key]
    public int GameId

    Properties/Details about the game here.... 

    //Foreign key to map to the specific user this Game belongs to
    [Required]
    public int UserId
}

Будет ли это на самом деле работать?MVC в фоновом режиме удостоверяется, что UserId равно aspnet_User.UserId?Я бы не хотел создавать расширение интерфейса MembershipProvider, но если вышеперечисленное не сработает, я полагаю, мне может понадобиться!

Кроме того, меня не интересует использование профилей;Как вы можете видеть, данные, которые я пытаюсь отобразить, будут центральными для этого приложения.Попытка анализа данных профиля практически невозможна, когда необходимо сопоставить другие объекты!

Ответы [ 3 ]

0 голосов
/ 01 февраля 2012

Когда вы добавляете новую игру, просто получите идентификатор текущего пользователя, который является guid (а не INT, как указано выше - вам нужен guid, он немного более безопасный и менее легко угадываемый в случае, если он когда-либо хранится в форме и позволяет пользователю вводить новые значения в него) Эта часть

Membership.GetUser().ProviderUserKey

Запросить это будет просто

ctx.Games.Where(o=>o.UserId=Membership.GetUser().ProviderUserKey) 

Если вы хотите, чтобы здесь было отношение, рассмотрите отношение @ Eranga. Если вы хотите рассмотреть каскадное удаление (так как при удалении пользователя все игры прощаются), см. Раздел по адресу: http://msdn.microsoft.com/en-us/library/bb738695.aspx

0 голосов
/ 01 февраля 2012

Нет. Ничего волшебного не происходит. Вы должны сами назначить правильный идентификатор для UserId.

Как EF или MVC могли узнать, что вы хотите использовать идентификатор зарегистрированного пользователя? Ничто не подразумевает, что любое пустое свойство UserId должно быть текущим пользователем.

0 голосов
/ 01 февраля 2012

Если вам нужно присоединиться к Game с aspnet_User, то ваши настройки не будут работать. Для этого вам нужно отобразить aspnet_User как сущность.

С другой стороны, если вам нужно получить Игры только для определенного пользователя, тогда ваша модель будет работать. Убедитесь, что вы вручную создали FK, чтобы сохранить целостность данных.

Редактировать

Вы можете отобразить таблицу aspnet_User как сущность следующим образом

[Table("aspnet_User")]
public class User
{
     public int UserId { get; set; }
     // other props
}
...