Environment
- VS 2015
- MVC 5
- .Net Framework 4.6.1
- Code First
- MS SQL 2012 Server
Model Class
User.cs
public class User
{
[Index]
[Key]
public int Id { get; set; }
[Column(TypeName = "nvarchar")]
[StringLength(255)]
[Required]
public string Name { get; set; }
[Column(TypeName = "nvarchar")]
[StringLength(125)]
[Required]
public string Login { get; set; }
[Column(TypeName = "nvarchar")]
[StringLength(500)]
[Required]
public string Password { get; set; }
[Column(TypeName = "bit")]
public bool IsDisabled { get; set; }
[Column(TypeName = "nvarchar")]
[StringLength(255)]
[Required]
public string Email { get; set; }
public int FailedLoginAttempts { get; set; }
public DateTime CreatedOn { get; set; }
public int? CreatedBy { get; set; }
public User Creator { get; set; }
public DateTime ModifiedOn { get; set; }
public int? ModifiedBy { get; set; }
public virtual User Modifier { get; set; }
[Column(TypeName = "bit")]
public bool IsDeleted { get; set; }
}
Context Class
MyContext.cs
public class MyContext : DbContext
{
#region Properties
public DbSet<User> Users { get; set; }
#endregion
#region Ctor
public MyContext() : base("MyContext")
{
}
#endregion
#region Methods
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// Pluralizing
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
// lower camelCase
modelBuilder.Properties().Configure(c =>
{
var name = c.ClrPropertyInfo.Name;
var newName = char.ToLower(name[0]) + name.Substring(1);
c.HasColumnName(newName);
});
// User Table
modelBuilder.Entity<User>()
.HasOptional(e => e.Creator)
.WithMany()
.HasForeignKey(m => m.CreatedBy);
modelBuilder.Entity<User>()
.HasOptional(e => e.Modifier)
.WithMany()
.HasForeignKey(m => m.ModifiedBy);
}
#endregion
}
Initializer Class
MyInitializer.cs
public class MyInitializer : System.Data.Entity.DropCreateDatabaseIfModelChanges<MyContext>
{
protected override void Seed(MyContext context)
{
var systemUser = new User { Name = "System Admin", Login = "System Admin", Password = "1234567890", IsDisabled = false, Email = "admin@admin.com", FailedLoginAttempts = 0, CreatedOn = DateTime.Today, ModifiedOn = DateTime.Today, IsDeleted = false };
context.Users.Add(systemUser);
context.SaveChanges();
var users = new List<User>
{
new User { Name = "Sam", Login = "sam", Password = "1234567890", IsDisabled = false, Email = "sam@sam.com", FailedLoginAttempts = 0, Creator=systemUser, CreatedOn = DateTime.Today, Modifier=systemUser, ModifiedOn = DateTime.Today, IsDeleted = false },
new User { Name = "Peter", Login = "peter", Password = "1234567890", IsDisabled = false, Email = "peter@peter.com", FailedLoginAttempts = 0, Creator=systemUser, CreatedOn = DateTime.Today, Modifier=systemUser, ModifiedOn = DateTime.Today, IsDeleted = false },
};
users.ForEach(s => context.Users.Add(s));
context.SaveChanges();
}
}
Result in SQL Server

沒有留言:
張貼留言