我目前正在尝试在帐户模型类中添加额外的模型,如此
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表中?
答案 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.AspNetUsers
(ApplicationUser
表<) / p>
您当然需要在RegisterViewModel
上保留该属性,以便使用该视图模型实际编辑这些字段,但您可以删除virtual
关键字。 virtual
关键字意味着可以覆盖属性或方法,这在实体上的导航属性的情况下是必需的,以便实体框架可以在其创建的代理类上附加延迟加载逻辑。这可能比您需要的信息更多,但无论长短,您的视图模型都不需要它。