protected override object CreateModel(
            ControllerContext controllerContext, 
            ModelBindingContext bindingContext, 
            Type modelType)
        {
            if (modelType.IsEntity() && FetchFromRepository)
            {
                var id = GetIdFromValueProvider(bindingContext, modelType);
                if (id.HasValue && id.Value != 0)
                {
                    var repository = repositoryResolver.GetRepository(modelType);
                    object entity;
                    try
                    {
                        entity = repository.GetById(id.Value);
                    }
                    finally
                    {
                        repositoryResolver.Release(repository);
                    }
                    return entity;
                }
            }

            // Fall back to default model creation if the target is not an existing entity
            return base.CreateModel(controllerContext, bindingContext, modelType);
        }
Example #2
0
        public EntityExpression(Type type, PrimaryKeyExpression externalId, Alias tableAlias, IEnumerable<FieldBinding> bindings, IEnumerable<MixinEntityExpression> mixins, bool avoidExpandOnRetrieving)
            : base(DbExpressionType.Entity, type)
        {
            if (type == null) 
                throw new ArgumentNullException("type");

            if (!type.IsEntity())
                throw new ArgumentException("type");
            
            if (externalId == null) 
                throw new ArgumentNullException("externalId");
            
            this.Table = Schema.Current.Table(type);
            this.ExternalId = externalId;

            this.TableAlias = tableAlias;
            this.Bindings = bindings.ToReadOnly();
            this.Mixins = mixins.ToReadOnly();

            this.AvoidExpandOnRetrieving = avoidExpandOnRetrieving;
        }
Example #3
0
 public bool IsEntity(Type type, bool declared)
 {
     return declared || type.IsEntity();
 }
 protected override Boolean CanHandle(Type fieldType)
 {
     return fieldType.IsEntity();
 }
 static string GetTypeNiceName(Type type)
 {
     if(type.IsModifiableEntity() && !type.IsEntity())
         return type.NiceName();
     return null;
 }
 public Boolean CanHandle(Type type)
 {
     return type.IsEntity();
 }