コード例 #1
0
ファイル: Query.cs プロジェクト: infine8/Reinforced.Tecture
        internal T Key <T>(IAddition <IPrimaryKey <T> > keyedAddition)
        {
            var a = (Add)keyedAddition;

            if (!a.IsExecuted)
            {
                throw new TectureOrmAspectException($"Cannot obtain primary key: addition of '{a.Entity}' did not happen yet");
            }

            string explanation = $"Get primary key of added {a.EntityType.Name}";

            var p = Aux.Promise <T>();

            if (p is Containing <T> c)
            {
                return(c.Get($"ORM_AdditionPK_{a.Order}", explanation));
            }

            var result = (T)(GetKey(a, GetKeyProperties <T>(a)).First());

            if (p is Demanding <T> d)
            {
                d.Fullfill(result, $"ORM_AdditionPK_{a.Order}", explanation);
            }

            return(result);
        }