Browse Source

Fixed EF Postgres and MongoDB

Pēteris Ņikiforovs 12 years ago
parent
commit
a34746dd87

+ 11 - 1
aspnet-mono/project/Benchmarks.Mono.AspNet/Controllers/MongoDBController.cs

@@ -3,6 +3,7 @@ using System.Collections.Generic;
 using System.Configuration;
 using System.Web.Mvc;
 
+using MongoDB.Bson.Serialization;
 using MongoDB.Driver;
 using MongoDB.Driver.Builders;
 
@@ -13,6 +14,15 @@ namespace Benchmarks.Mono.AspNet.Controllers
     public class MongoDBController : Controller
     {
         private static string connectionString = ConfigurationManager.ConnectionStrings["MongoDB"].ConnectionString;
+        
+        static MongoDBController()
+        {
+            BsonClassMap.RegisterClassMap<World>(m =>
+            {
+                m.MapProperty(w => w.id);
+                m.MapProperty(w => w.randomNumber);
+            });
+        }
 
         public ActionResult Index(int? queries)
         {
@@ -28,7 +38,7 @@ namespace Benchmarks.Mono.AspNet.Controllers
             for (int i = 0; i < worlds.Capacity; i++)
             {
                 int randomID = random.Next(0, 10000) + 1;
-                worlds.Add(collection.FindOne(Query<World>.EQ(e => e.id, randomID)));
+                worlds.Add(collection.FindOne(Query<World>.EQ(w => w.id, randomID)));
             }
 
             return queries != null ? Json(worlds, JsonRequestBehavior.AllowGet)

+ 18 - 5
aspnet-mono/project/Benchmarks.Mono.AspNet/Models/EntityFramework.cs

@@ -1,7 +1,10 @@
 using System;
 using System.Data.Entity;
+using System.Data.Entity.ModelConfiguration.Configuration;
+using System.Data.Entity.ModelConfiguration.Configuration.Properties.Primitive;
 using System.Data.Entity.ModelConfiguration.Configuration.Types;
 using System.Data.Entity.ModelConfiguration.Conventions;
+using System.Reflection;
 
 namespace Benchmarks.Mono.AspNet.Models
 {
@@ -20,18 +23,28 @@ namespace Benchmarks.Mono.AspNet.Models
             modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
             
             if (Database.Connection is Npgsql.NpgsqlConnection)
-            {
-                modelBuilder.HasDefaultSchema("public");
-                modelBuilder.Conventions.Add<LowerCaseConfigurationConvention>();
-            }
+                modelBuilder.Conventions.Add<PostgreSqlConfigurationConvention>();
         }
         
-        private class LowerCaseConfigurationConvention : IConfigurationConvention<Type, EntityTypeConfiguration>
+        private class PostgreSqlConfigurationConvention
+            : IConfigurationConvention<Type, EntityTypeConfiguration>, 
+              IConfigurationConvention<PropertyInfo, PrimitivePropertyConfiguration>,
+              IConfigurationConvention<Type, ModelConfiguration>
         {
             public void Apply(Type memberInfo, Func<EntityTypeConfiguration> configuration)
             {
                 configuration().ToTable(memberInfo.Name.ToLowerInvariant(), null);
             }
+            
+            public void Apply(PropertyInfo memberInfo, Func<PrimitivePropertyConfiguration> configuration)
+            {
+                configuration().ColumnName = memberInfo.Name.ToLowerInvariant();
+            }
+            
+            public void Apply(Type memberInfo, Func<ModelConfiguration> configuration)
+            {
+                configuration().DefaultSchema = "public";
+            }
         }
     }
 }