[英]EF Code-first MVC: Should I add fields to the default AspNetUsers table or create another 'UserInfo' table that relates to the AspNetUsers table?
我正在使用代码优先实体框架制作一个简单的MVC应用程序。 我正在尝试使用内置的用户注册/登录。 它为我提供了默认的AccountController和ASP User表 。
我的其他实体是玩家,游戏和锦标赛:
public class Player
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public List<Game> Games { get; set; }
public List<Tournament> Tournaments { get; set; }
}
public class Game
{
public int Id { get; set; }
public string Title { get; set; }
public List<Player> Players { get; set; }
public List<Tournament> Tournaments { get; set; }
}
public class Tournament
{
public int Id { get; set; }
public List<Player> Players { get; set; }
public List<Game> Games { get; set; }
}
EF提供了这些表 。
每个登录的人都是玩家。 我希望每个玩家都有一个密码和用户名。 是否应该删除Players
表并将Player
属性添加到提供的User
类和AspNetUsers
表中? 还是应该使用外键在Players
表和AspNetUsers
表之间创建关系?
这些选项中的一个或两个是否可能/更可取?
另外,在Players,Games和Tournaments类中还将有其他属性。 我只是从基础开始。
非常感谢您的宝贵时间。 如果我不清楚或需要任何其他信息,请告诉我。
编辑:刚发现以下内容: http : //blogs.msdn.com/b/webdev/archive/2013/10/16/customizing-profile-information-in-asp-net-identity-in-vs-2013-templates。 aspx
它显示了类似于我上面描述的两种方法。 与在现有表中添加字段相比,添加新的UserInfo表有什么好处?
我将此属性添加到播放器表:
public virtual ApplicationUser User { get; set; }
其中ApplicationUser是Visual Studio开箱即用提供的表。 ApplicationUser使用身份,因此当用户创建新的播放器时,请使用playerController的Create操作将用户的用户ID设置为播放器表中的播放器ID:
var userId = User.Identity.GetUserId();
Player.PlayerId = userId;
将属性添加到ApplicationUser类。 我也建议您将其重命名为Player,这样代码将更好地匹配域语言。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.