Advertisement
Ortund

Untitled

Jun 25th, 2014
390
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.99 KB | None | 0 0
  1. namespace Logan.Web.DBContext
  2. {
  3.     public class WebDBContext : DbContext
  4.     {
  5.         protected override void OnModelCreating(DbModelBuilder modelBuilder)
  6.         {
  7.             base.OnModelCreating(modelBuilder);
  8.  
  9.             modelBuilder.Configurations.Add(new UserDBContext());
  10.             modelBuilder.Configurations.Add(new RoleDBContext());
  11.             modelBuilder.Configurations.Add(new ArticleDBContext());
  12.             modelBuilder.Configurations.Add(new ArticleCommentDBContext());
  13.             modelBuilder.Configurations.Add(new ForumTitleDBContext());
  14.             modelBuilder.Configurations.Add(new ForumCategoryDBContext());
  15.             modelBuilder.Configurations.Add(new ForumThreadDBContext());
  16.             modelBuilder.Configurations.Add(new ForumPostDBContext());
  17.         }
  18.         public WebDBContext()
  19.             : base("LoganMVC")
  20.         {
  21.             Database.SetInitializer<WebDBContext>(new DropCreateDatabaseAlways<WebDBContext>());
  22.         }
  23.  
  24.         public void Seed()
  25.         {
  26.             if (!Roles.Any())
  27.             {
  28.                 List<Role> roles = new List<Role>
  29.                 {
  30.                     new Role { RoleName = "Admin" },
  31.                     new Role { RoleName = "User" }
  32.                 };
  33.                 foreach (Role r in roles)
  34.                 {
  35.                     Roles.Add(r);
  36.                 }
  37.                 SaveChanges();
  38.             }
  39.             if (!Users.Any())
  40.             {
  41.                 User u = new User();
  42.                 u.EmailAddress = "ortund@this.com";
  43.                 u.Username = "ortund";
  44.                 u.Password = Hashing.CreateHash("S@omep455w0rD");
  45.                 u.Role = Roles.Single(r => r.RoleName == "Admin");
  46.                 u.PasswordReset = false;
  47.                 u.PasswordResetKey = Hashing.CreateKey(); // Hashing is referenced from Logan.Utilities
  48.  
  49.                 Users.Add(u);
  50.                 SaveChanges();
  51.             }
  52.         }
  53.  
  54.         public DbSet<User> Users { get; set; }
  55.         public DbSet<Role> Roles { get; set; }
  56.         public DbSet<Article> Articles { get; set; }
  57.         public DbSet<ArticleComment> ArticleComments { get; set; }
  58.         public DbSet<ForumTitle> ForumTitles { get; set; }
  59.         public DbSet<ForumCategory> ForumCategories { get; set; }
  60.         public DbSet<ForumThread> ForumThreads { get; set; }
  61.         public DbSet<ForumPost> ForumPosts { get; set; }
  62.     }
  63.  
  64.     // LoganDBBaseObject sets Key constraints for generic columns (for PK and auditing purposes) as needed
  65.     public class RoleDBContext : LoganDBBaseObject<Role>
  66.     {
  67.         private static WebDBContext db = new WebDBContext();
  68.  
  69.         public RoleDBContext()
  70.             : base()
  71.         {
  72.             Property(p => p.RoleName)
  73.                 .HasColumnName("sRoleName")
  74.                 .IsRequired();
  75.  
  76.             HasMany(m => m.Users)
  77.                 .WithRequired();
  78.  
  79.             ToTable("Roles");
  80.         }
  81.     }
  82.  
  83.     public class UserDBContext : LoganDBBaseObject<User>
  84.     {
  85.         private static WebDBContext db = new WebDBContext();
  86.  
  87.         public UserDBContext()
  88.             : base()
  89.         {
  90.             Property(p => p.Username)
  91.                 .HasColumnName("sUsername")
  92.                 .HasMaxLength(20)
  93.                 .IsRequired();
  94.  
  95.             Property(p => p.EmailAddress)
  96.                 .HasColumnName("sEmailAddress")
  97.                 .HasMaxLength(200)
  98.                 .IsRequired();
  99.  
  100.             Property(p => p.Password)
  101.                 .HasColumnName("sPassword")
  102.                 .HasMaxLength(255)
  103.                 .IsRequired();
  104.  
  105.             Property(p => p.Biography)
  106.                 .HasColumnName("sBiography")
  107.                 .HasColumnType("text");
  108.  
  109.             HasRequired(r => r.Role)
  110.                 .WithMany(m => m.Users)
  111.                 .Map(x => x.MapKey("fkRoleID"))
  112.                 .WillCascadeOnDelete(false);
  113.  
  114.             Property(p => p.PasswordReset)
  115.                 .HasColumnName("PasswordReset")
  116.                 .HasColumnType("bit");
  117.  
  118.             Property(p => p.PasswordResetKey)
  119.                 .HasColumnName("sPasswordResetKey");
  120.  
  121.             Property(p => p.ResetExpiry)
  122.                 .HasColumnType("datetime")
  123.                 .IsOptional();
  124.  
  125.             Property(p => p.CreatedBy)
  126.                 .HasColumnName("sCreatedBy");
  127.  
  128.             Property(p => p.CreateDate)
  129.                 .HasColumnType("datetime")
  130.                 .IsOptional();
  131.  
  132.             ToTable("Users");
  133.  
  134.         }
  135.     }
  136. }
  137.  
  138. namespace Logan.Web.Objects
  139. {
  140.     // LoganBaseObject just adds in generic columns to the tables (PK and auditing)
  141.     public class Role : LoganBaseObject<Role>
  142.     {
  143.         public string RoleName { get; set; }
  144.  
  145.         public virtual ICollection<User> Users { get; set; }
  146.  
  147.         public Role()
  148.         {
  149.             RoleName = String.Empty;
  150.             Users = new List<User>();
  151.         }
  152.     }
  153.  
  154.     public class User : LoganBaseObject<User>
  155.     {
  156.         public string Username { get; set; }
  157.         public string EmailAddress { get; set; }
  158.         public string Password { get; set; }
  159.         public string Biography { get; set; }
  160.         public virtual Role Role { get; set; }
  161.         public bool PasswordReset { get; set; }
  162.         public string PasswordResetKey { get; set; }
  163.         public DateTime ResetExpiry { get; set; }
  164.         public string CreatedBy { get; set; }
  165.         public DateTime CreateDate { get; set; }
  166.        
  167.         public virtual ICollection<Article> Articles { get; set; }
  168.  
  169.         public User()
  170.         {
  171.             Username = String.Empty;
  172.             EmailAddress = String.Empty;
  173.             Password = String.Empty;
  174.             Biography = String.Empty;
  175.             PasswordReset = false;
  176.             CreatedBy = String.Empty;
  177.             Articles = new List<Article>();
  178.         }
  179.     }
  180. }
  181.  
  182. namespace Logan.Web.Data
  183. {
  184.     public class WebUser
  185.     {
  186.         WebDBContext db = new WebDBContext();
  187.  
  188.         // CRUD functionality goes here
  189.     }
  190. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement