我有自定义ApplicationUser
并创建UserProfile
,但无法从UserProfile
获取数据ApplicationUser
。
攻击图片:
请参阅http://www.mediafire.com/file/a9bpajjc44fuewp/DemoMVC6.rar
更新我的代码:
namespace DemoMVC6.Models
{
// Add profile data for application users by adding properties to the ApplicationUser class
public class ApplicationUser : IdentityUser
{
public virtual UserProfile UserProfile { get; set; }
}
[Table("UserProfile")]
public class UserProfile : EntityBase
{
[Required, MinLength(3), MaxLength(20)]
public string FirstName { get; set; }
[Required, MinLength(3), MaxLength(20)]
public string LastName { get; set; }
public bool? Gender { get; set; }
public DateTime? Birthday { get; set; }
public string Address { get; set; }
public virtual ApplicationUser ApplicationUser { get; set; }
}
public abstract class EntityBase
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public virtual int Id { get; set; }
[EnumDataType(typeof(RecordStatus))]
public virtual RecordStatus ActiveStatus { get; set; }
[DataType(DataType.DateTime)]
public virtual DateTime CreatedOn { get; set; }
public virtual int CreatedBy { get; set; }
[DataType(DataType.DateTime)]
public virtual DateTime ModifiedOn { get; set; }
public virtual int ModifiedBy { get; set; }
}
public enum RecordStatus { Inactive = 0, Active = 1 }
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
// Customize the ASP.NET Identity model and override the defaults if needed.
// For example, you can rename the ASP.NET Identity table names and more.
// Add your customizations after calling base.OnModelCreating(builder);
}
public override int SaveChanges()
{
var currentTime = DateTime.Now;
var trackerEntries = this.ChangeTracker.Entries().Where(e => e.State == EntityState.Added || e.State == EntityState.Modified);
//Find all Entities that are Added/Modified that inherit from my EntityBase
foreach (var entry in trackerEntries)
{
if (entry.State == EntityState.Added)
{
if (entry.Metadata.FindProperty("ActiveStatus") != null)
entry.Property("ActiveStatus").CurrentValue = RecordStatus.Active;
if (entry.Metadata.FindProperty("CreatedOn") != null)
entry.Property("CreatedOn").CurrentValue = currentTime;
if (entry.Metadata.FindProperty("ModifiedOn") != null)
entry.Property("ModifiedOn").CurrentValue = currentTime;
}
else
{
if (entry.Metadata.FindProperty("ModifiedOn") != null)
entry.Property("ModifiedOn").CurrentValue = currentTime;
}
}
return base.SaveChanges();
}
public DbSet<UserProfile> UserProfiles { get; set; }
}
}