// --- 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); }