因此,我使用EF6的Fluent API在我的代碼第一個應用程序中指定實體屬性。不過,我想爲我的一個實體指定一個表類型,是否可以通過api執行此操作?如何使用EF6 Fluent API爲MySQL指定表類型?
ApplicationDbContext:
public class ApplicationUser : IdentityUser
{
public string CreatedBy { get; set; }
public DateTime Active { get; set; }
public DateTime RememberMeTimeOut { get; set; }
public int CentralPermissionUserID { get; set; }
public virtual ICollection<UserLogs> UserLogs { 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;
}
}
[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DBContext", throwIfV1Schema: false)
{
}
public DbSet<UserLogs> UserLogs { get; set; }
public DbSet<Supplier> Supplier { get; set; }
public DbSet<SupplierArchive> SupplierArchive { get; set; }
public DbSet<MenuStatsSummary> MenuStatsSummary { get; set; }
public DbSet<Pot> Pots { get; set; }
public DbSet<PotDupeStandards> PotDupeStandards { get; set; }
public DbSet<DupeStandards> DupeStandards { get; set; }
public DbSet<DupeStandardMapping> DupeStandardMapping { get; set; }
public DbSet<DupeData> DupeData { get; set; }
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
#region Application User
modelBuilder.Entity<ApplicationUser>().Property(u => u.UserName).HasMaxLength(255);
modelBuilder.Entity<ApplicationUser>().Property(u => u.Email).HasMaxLength(255);
modelBuilder.Entity<ApplicationUser>().Property(u => u.CreatedBy).HasMaxLength(50).IsRequired();
modelBuilder.Entity<ApplicationUser>().Property(u => u.CentralPermissionUserID).IsRequired();
modelBuilder.Entity<ApplicationUser>()
.HasMany(u => u.UserLogs)
.WithRequired(u => u.User)
.HasForeignKey(u => u.UserID)
.WillCascadeOnDelete(true);
modelBuilder.Entity<ApplicationUser>()
.Property(u => u.Email)
.HasColumnAnnotation("Index", new IndexAnnotation(new IndexAttribute("UQ_Email") { IsUnique = true }));
modelBuilder.Entity<ApplicationUser>()
.Property(u => u.UserName)
.HasColumnAnnotation("Index", new IndexAnnotation(new IndexAttribute("UQ_UserName") { IsUnique = true }));
#endregion
因此,可以說,我想設置ApplicationUser
表使用MyISAM
臺引擎,我該怎麼辦呢?
你是什麼'engine'是什麼意思? – Sampath
MySQL有多個表引擎會影響表的工作方式和目的。例如,InnoDB是默認的,另一個是Archive表引擎,它基本上只是以性能和其他關鍵表特性爲代價來壓縮內存 –