实体框架-ASP.NET MVC 5与ApplicationUser的一一对应关系



我是asp.net mvc和实体框架的新手,所以我真的需要一些帮助。

我希望将新类实现为具有一对一关系的IdentityUser类。现在我有这个:

public class ApplicationUser : IdentityUser
{
    public virtual MapPosition MapPosition { get; set; }
    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
    {
        // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
        var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
        // Add custom user claims here
        return userIdentity;
    }
}
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public DbSet<MapPosition> MapPositions { get; set; }
    public ApplicationDbContext()
        : base("DefaultConnection", throwIfV1Schema: false)
    {
    }
    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }
}
public class MapPosition
{
    [Key, ForeignKey("ApplicationUser")]
    public string UserId { get; set; }
    public virtual ApplicationUser ApplicationUser { get; set; }
    public int PositionX { get; set; }
    public int PositionY { get; set; }
}

一切都很好,已经创建了新表,但我如何才能让它在每次创建新用户时,应用程序也会为两个属性创建默认值为0的MapPosition条目?

您可以在构造函数中完成:

public ApplicationUser()
{
    MapPosition = new MapPosition { PositionX = 0, PositionY  = 0 };
}

我更喜欢在控制器上的Create操作中构建视图模型,并在那里进行处理。然后在更新之前使用AutoMapper复制到实体中。http://geekswithblogs.net/michelotti/archive/2009/10/25/asp.net-mvc-view-model-patterns.aspx

将此视为工作流问题。当MapPosition对象在应用程序工作流中"有意义"时创建它(用户交互的地方,现在需要该对象)。这些类型的工作流就是MVC的全部内容。

用户参与是通过网页上的互动来引导的(比如点击"注册"新用户帐户链接)。此操作通常在您的"AccountController"中捕获为"//GET:/Account/Register"。用户将被引导查看表单并将所需信息输入以进行注册。然后在帖子中,服务器会创建ApplicationUser。然后,您可以在返回视图上,通过以下方式展开工作流程:

  • 在现有的"视图"上添加一个按钮以启动新的工作流程:"获取"坐标的"查看"
  • 通过增加RedirectToAction("索引"、"主页")的返回,继续现有的工作流程;到另一个控制器,如RedirectToAction("Cordines"、"MapPosition")

以上两项都需要创建一个控制器来捕捉这个"获取",并在该控制器内部确定MapPosition是否已创建,以及是否未启动它。返回的View以类似于起始地图位置的方式结束您的工作流。

相关内容

  • 没有找到相关文章

最新更新