コード例 #1
0
        private static TColumn CreateColumn <TColumnGroup, TColumn>(Mounter <TColumnGroup, TColumn> mounter, Action <TColumn> initializer)
            where TColumnGroup : Projection
            where TColumn : Column, new()
        {
            var result = Column.Create <TColumn>(mounter.OriginalDeclaringType, mounter.OriginalName);
            var parent = mounter.Parent;

            result.Construct(parent.ParentModel, mounter.DeclaringType, parent.GetColumnName(mounter), ColumnKind.ProjectionMember, null, initializer);
            parent.Add(result);
            return(result);
        }
コード例 #2
0
        private static TChildModel CreateChildModel <TModel, TChildModel>(Mounter <TModel, TChildModel> mounter,
                                                                          Func <TChildModel, T> relationshipGetter, Func <TModel, TChildModel> constructor)
            where TModel : Model <T>
            where TChildModel : Model, new()
        {
            var         parentModel        = mounter.Parent;
            TChildModel result             = constructor(parentModel);
            var         parentRelationship = relationshipGetter(result).UnsafeJoin(parentModel.PrimaryKey);
            var         parentMappings     = AppendColumnMappings(parentRelationship, null, result, parentModel);

            result.Construct(parentModel, mounter.DeclaringType, mounter.Name, parentRelationship, parentMappings);
            return(result);
        }
コード例 #3
0
ファイル: Projection.cs プロジェクト: aTiKhan/RDO.Net
 protected static void Register <T, TColumn>(Expression <Func <T, TColumn> > getter, Mounter <TColumn> fromMounter)
     where T : Projection
     where TColumn : Column, new()
 {
     RegisterColumn(getter, fromMounter);
 }
コード例 #4
0
 protected static void Register <TModel, TColumn>(Expression <Func <TModel, TColumn> > getter, Mounter <TColumn> fromMounter)
     where TModel : Model
     where TColumn : Column, new()
 {
     RegisterColumn(getter, fromMounter);
 }
コード例 #5
0
        protected static void Register <T, TColumn>(Expression <Func <T, TColumn> > getter, Mounter <TColumn> fromMounter)
            where T : Projection
            where TColumn : Column, new()
        {
            var initializer = getter.Verify(nameof(getter));

            fromMounter.VerifyNotNull(nameof(fromMounter));

            var result = s_columnManager.Register(getter, mounter => CreateColumn(mounter, initializer));

            result.OriginalDeclaringType = fromMounter.OriginalDeclaringType;
            result.OriginalName          = fromMounter.OriginalName;
        }
コード例 #6
0
 private string GetColumnName <T>(Mounter <T> mounter)
 {
     return(IsLocal ? mounter.Name : Name + "." + mounter.Name);
 }
コード例 #7
0
ファイル: Adhoc.cs プロジェクト: xydoublez/RDO.Net
 /// <summary>Adds a new column to this adhoc model, from existing column property.</summary>
 /// <typeparam name="T">The type of the column.</typeparam>
 /// <param name="mounter">The existing column mounter.</param>
 /// <param name="inheritColumnKey">A value indicates whether the newly added column should inherit <see cref="ColumnId"/> from the existing column property.</param>
 /// <param name="initializer">The additional column initializer.</param>
 /// <returns>The new column added.</returns>
 public T AddColumn <T>(Mounter <T> mounter, bool inheritColumnKey = false, Action <T> initializer = null)
     where T : Column, new()
 {
     return(ColumnList.Add(mounter, inheritColumnKey, initializer));
 }