将公司模型添加到帐户类

时间:2015-05-14 15:07:22

标签: c# asp.net-mvc-5

我目前正在尝试在帐户模型类中添加额外的模型,如此

public String onPrepareStatement(String sql) {
    System.out.println("onPrepareStatement: Called for statement: " + sql);
    //The SQL in input is like this:
    //onPrepareStatement: Called for statement:     
    //select this_.doc_id as doc_id1_1_0_, this_.city as city2_1_0_

    //for a java object Obj(Integer doc_id,String city);

    //What i want is read->modify->return the SQL to Hibernate:

    //[READ]select "doc_id" as doc_id1_1_0_, "city" as city2_1_0_    
    //[MODIFY]select "doc_id2" as doc_id1_1_0_, "city2" as city2_1_0_
    //[RETURN]select this_.doc_id as doc_id1_1_0_, this_.city as city2_1_0_
    return sql;
}

我不确定的是如何使用公司类创建DBSet,并且公司的ID列是否会显示在users表中?

1 个答案:

答案 0 :(得分:1)

MVC 5使用Identity,其中缺少一个ApplicationUser类。这是您的应用程序"用户"以及Entity Framework为您的数据库保留的内容。因此,您需要在此处添加其他关系,而不是RegisterViewModel,因为它的名称表示的是视图模型,而不是实体。

<强> IdentityModels.cs

public class ApplicationUser : IdentityUser
{
    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 virtual CompanyDetails Company { get; set; }
}

生成迁移并更新数据库后,将创建dbo.CompanyDetails表,并将该表的外键添加到dbo.AspNetUsersApplicationUser表<) / p>

您当然需要在RegisterViewModel上保留该属性,以便使用该视图模型实际编辑这些字段,但您可以删除virtual关键字。 virtual关键字意味着可以覆盖属性或方法,这在实体上的导航属性的情况下是必需的,以便实体框架可以在其创建的代理类上附加延迟加载逻辑。这可能比您需要的信息更多,但无论长短,您的视图模型都不需要它。