EntityFramework.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using System;
  2. using System.Data.Entity;
  3. using System.Data.Entity.ModelConfiguration.Configuration;
  4. using System.Data.Entity.ModelConfiguration.Configuration.Properties.Primitive;
  5. using System.Data.Entity.ModelConfiguration.Configuration.Types;
  6. using System.Data.Entity.ModelConfiguration.Conventions;
  7. using System.Reflection;
  8. namespace Benchmarks.Mono.AspNet.Models
  9. {
  10. public class EntityFramework : DbContext
  11. {
  12. public DbSet<World> Worlds { get; set; }
  13. public DbSet<Fortune> Fortunes { get; set; }
  14. public EntityFramework(string providerName)
  15. : base(providerName)
  16. {
  17. }
  18. protected override void OnModelCreating(DbModelBuilder modelBuilder)
  19. {
  20. modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
  21. if (Database.Connection is Npgsql.NpgsqlConnection)
  22. modelBuilder.Conventions.Add<PostgreSqlConfigurationConvention>();
  23. }
  24. private class PostgreSqlConfigurationConvention
  25. : IConfigurationConvention<Type, EntityTypeConfiguration>,
  26. IConfigurationConvention<PropertyInfo, PrimitivePropertyConfiguration>,
  27. IConfigurationConvention<Type, ModelConfiguration>
  28. {
  29. public void Apply(Type memberInfo, Func<EntityTypeConfiguration> configuration)
  30. {
  31. configuration().ToTable(memberInfo.Name.ToLowerInvariant(), null);
  32. }
  33. public void Apply(PropertyInfo memberInfo, Func<PrimitivePropertyConfiguration> configuration)
  34. {
  35. configuration().ColumnName = memberInfo.Name.ToLowerInvariant();
  36. }
  37. public void Apply(Type memberInfo, Func<ModelConfiguration> configuration)
  38. {
  39. configuration().DefaultSchema = "public";
  40. }
  41. }
  42. }
  43. }