繁体   English   中英

EF代码优先MVC:我应该将字段添加到默认的AspNetUsers表中还是创建另一个与AspNetUsers表相关的“ UserInfo”表?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM