Example #1
0
            /// <summary>
            /// 从指定的对象中拷贝所有数据到另一对象中。
            ///
            /// 默认实体只拷贝所有数据属性。
            /// 子类可重写此方法来拷贝更多一般字段。
            /// </summary>
            /// <param name="src">数据源对象。</param>
            /// <param name="dst">目标对象。</param>
            protected virtual void MemoryClone(Entity src, Entity dst)
            {
                //同时由于以下代码只是对托管属性进行了拷贝,会导致一些一般字段无法复制。(参见 Rafy.RBAC.ModuleAC 实体类型。)

                //返回的子对象的属性只是简单的完全Copy参数data的数据。
                dst.Clone(src, CloneOptions.ReadDbRow());
            }
        /// <summary>
        /// 把一行数据转换为一个实体。
        /// </summary>
        /// <param name="row"></param>
        /// <returns></returns>
        Entity IRepositoryInternal.ConvertRow(Entity row)
        {
            var entity = Entity.New(row.GetType());

            entity.PersistenceStatus = PersistenceStatus.Unchanged;

            //返回的子对象的属性只是简单的完全Copy参数data的数据。
            entity.Clone(row, CloneOptions.ReadDbRow());

            this.NotifyLoaded(entity);

            return(entity);
        }
Example #3
0
        /// <summary>
        /// 把一行数据转换为一个实体。
        /// </summary>
        /// <param name="row"></param>
        /// <returns></returns>
        Entity IRepositoryInternal.ConvertRow(Entity row)
        {
            var entity = Entity.New(row.GetType());

            //返回的子对象的属性只是简单的完全Copy参数data的数据。
            var opt = CloneOptions.ReadDbRow();

            opt.Method = CloneValueMethod.LoadProperty;
            entity.Clone(row, opt);
            entity.PersistenceStatus = PersistenceStatus.Unchanged;

            this.NotifyLoaded(entity);

            return(entity);
        }