Exemplo n.º 1
0
        // --- create, persist ---
        public object Create(Type type)
        {
            if (!IsEntityDefined(type))
            {
                throw new ArgumentException("Type attribute must be defined as Entity");
            }

            var newId = _store.CreateId();
            var ret   = CreateEntity(type, newId, PersistentState.New);

            /// typeのpropを見てCompositeなものはさらにCreate()
            var service = TypeService.Instance;
            var props   = service.GetCompositePersistProperties(type);

            foreach (var prop in props)
            {
                var attr      = service.GetPersistAttribute(prop);
                var compType  = attr.Composite;
                var compValue = Create(compType);
                prop.SetValue(ret, compValue, null);
            }

            OnEntityCreated(ret, type);
            OnEntityPersisted(ret, type);
            return(ret);
        }