コード例 #1
0
        private MongoDbContextModel CreateModel(CafMongoDbContext dbContext)
        {
            var modelBuilder = new MongoModelBuilder();

            BuildModelFromDbContextType(modelBuilder, dbContext.GetType());
            BuildModelFromDbContextInstance(modelBuilder, dbContext);
            return(modelBuilder.Build());
        }
コード例 #2
0
        protected virtual void BuildModelFromDbContextCollectionProperty(MongoModelBuilder modelBuilder, PropertyInfo collectionProperty)
        {
            var entityType          = collectionProperty.PropertyType.GenericTypeArguments[0];
            var collectionAttribute = collectionProperty.GetCustomAttributes().OfType <MongoCollectionAttribute>().FirstOrDefault();

            modelBuilder.Entity(entityType, b =>
            {
                b.CollectionName = collectionAttribute?.CollectionName ?? collectionProperty.Name;
            });
        }
コード例 #3
0
        protected virtual void BuildModelFromDbContextType(MongoModelBuilder modelBuilder, Type dbContextType)
        {
            var collectionProperties =
                from property in dbContextType.GetTypeInfo().GetProperties(BindingFlags.Public | BindingFlags.Instance)
                where
                ReflectionExt.CanAssignableTo(property.PropertyType, typeof(IMongoCollection <>)) &&
                typeof(IEntity).IsAssignableFrom(property.PropertyType.GenericTypeArguments[0])
                select property;

            foreach (var collectionProperty in collectionProperties)
            {
                BuildModelFromDbContextCollectionProperty(modelBuilder, collectionProperty);
            }
        }
コード例 #4
0
 protected virtual void BuildModelFromDbContextInstance(MongoModelBuilder modelBuilder, CafMongoDbContext dbContext)
 {
     dbContext.CreateModel(modelBuilder);
 }
コード例 #5
0
 protected internal virtual void CreateModel(MongoModelBuilder modelBuilder)
 {
 }