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