/// <summary> /// 简单 ORM 映射 /// </summary> internal static void Test() { using (AutoCSer.Sql.ModelTable <OrmOnly> sqlTable = AutoCSer.Sql.ModelTable <OrmOnly> .Get()) { AutoCSer.Metadata.MemberMap <OrmOnly> updateMemberMap = sqlTable.CreateMemberMap().Set(value => value.Value); sqlTable.InsertQueue(new OrmOnly { Value = 1 }); foreach (OrmOnly value in sqlTable.SelectQueue().Value) { Console.WriteLine(value.toJson()); sqlTable.UpdateQueue(new OrmOnly { Id = value.Id, Value = value.Value + 1 }, updateMemberMap); } //foreach (OrmOnly value in sqlTable.Select()) //{ // Console.WriteLine(value.toJson()); // sqlTable.Delete(value.Id); //} using (deleteWait = new AutoResetEvent(false)) { deleteCount = 1; foreach (OrmOnly value in sqlTable.SelectQueue().Value) { Console.WriteLine(value.toJson()); Interlocked.Increment(ref deleteCount); sqlTable.DeleteQueue(value.Id, onDeleted); } onDeleted(); deleteWait.WaitOne(); } } }
/// <summary> /// 更新数据前验证数据可取消更新数据操作 /// </summary> /// <param name="value">待更新数据</param> /// <param name="memberMap">更新数据成员位图</param> /// <param name="cancel">取消操作数据</param> private static void onUpdate(NowTime value, AutoCSer.Metadata.MemberMap <OrmModel.NowTime> memberMap, ref AutoCSer.Sql.AnyCancel cancel) { if (!cancel.IsCancel) { //更新数据前验证数据可取消更新数据操作 } }
internal static bool TestCase() { MemberMap value = new MemberMap { Value1 = 1, Value2 = 2, Value3 = 3 }; //成员位图初始化代价比较大,应该根据需求重用该对象 AutoCSer.Metadata.MemberMap <MemberMap> serializeMemberMap = AutoCSer.Metadata.MemberMap <MemberMap> .NewEmpty(); #if DOTNET2 serializeMemberMap.SetMember("Value1"); //添加成员 Value1 serializeMemberMap.SetMember("Value2"); //添加成员 Value2 #else serializeMemberMap.SetMember(member => member.Value1); //添加成员 Value1 serializeMemberMap.SetMember(member => member.Value2); //添加成员 Value2 #endif AutoCSer.Xml.SerializeConfig serializeMemberMapConfig = new AutoCSer.Xml.SerializeConfig { MemberMap = serializeMemberMap }; string xml = AutoCSer.XmlSerializer.Serialize(value, serializeMemberMapConfig); MemberMap newValue = AutoCSer.XmlDeSerializer.DeSerialize <MemberMap>(xml); return(newValue != null && newValue.Value1 == 1 && newValue.Value2 == 2 && newValue.Value3 == 0); }
protected void setMember(AutoCSer.Metadata.MemberMap <modelType> .MemberIndex memberIndex) { if (memberMap == null) { memberMap = AutoCSer.Metadata.MemberMap <modelType> .NewEmpty(); } memberIndex.SetMember(memberMap); }
internal void ParseJson(AutoCSer.JsonDeSerializer parser) { if (MemberMap == null) { MemberMap = AutoCSer.Metadata.MemberMap <valueType> .NewEmpty(); } parser.MemberMap = MemberMap; parser.TypeDeSerialize(ref Value); }
private void deSerialize(AutoCSer.BinaryDeSerializer deSerializer) { AutoCSer.Metadata.MemberMap oldMemberMap = deSerializer.SetCustomMemberMap(MemberMap); try { deSerializer.TypeDeSerialize(ref Value); } finally { MemberMap = (AutoCSer.Metadata.MemberMap <valueType>)deSerializer.SetCustomMemberMap(oldMemberMap); } }
internal void ParseXml(AutoCSer.XmlDeSerializer xmlDeSerializer) { if (MemberMap == null) { MemberMap = AutoCSer.Metadata.MemberMap <valueType> .NewEmpty(); } xmlDeSerializer.MemberMap = MemberMap; xmlDeSerializer.TypeDeSerialize(ref Value); }
internal void ParseXml(AutoCSer.Xml.Parser parser) { if (MemberMap == null) { MemberMap = AutoCSer.Metadata.MemberMap <valueType> .NewEmpty(); } parser.MemberMap = MemberMap; parser.TypeParse(ref Value); }
/// <summary> /// SQL操作缓存 /// </summary> /// <param name="table">SQL操作工具</param> /// <param name="group">数据分组</param> protected Table(Sql.Table <valueType, modelType> table, int group) { if (table == null) { throw new ArgumentNullException(); } memberGroup = group; SqlTable = table; MemberMap = DataModel.Model <modelType> .GetCacheMemberMap(group); }
public static VT copy <VT, BT>(this VT value, AutoCSer.Metadata.MemberMap <BT> memberMap) where VT : class, BT { if (value == null) { return(null); } VT newValue = AutoCSer.Metadata.DefaultConstructor <VT> .Constructor(); AutoCSer.MemberCopy.Copyer <BT> .Copy(newValue, value, memberMap); return(newValue); }
public static T copy <T>(this T value, AutoCSer.Metadata.MemberMap <T> memberMap = null) where T : class { if (value == null) { return(null); } T newValue = AutoCSer.Metadata.DefaultConstructor <T> .Constructor(); AutoCSer.MemberCopy.Copyer <T> .Copy(newValue, value, memberMap); return(newValue); }
public static valueType copy <valueType>(this valueType value, AutoCSer.Metadata.MemberMap <valueType> memberMap = null) where valueType : class { if (value == null) { return(null); } valueType newValue = AutoCSer.Emit.Constructor <valueType> .New(); AutoCSer.MemberCopy.Copyer <valueType> .Copy(newValue, value, memberMap); return(newValue); }
internal void ToXml(AutoCSer.XmlSerializer serializer) { if (MemberMap == null || MemberMap.IsDefault) { serializer.TypeSerialize(Value); } else { AutoCSer.Metadata.MemberMap memberMap = serializer.SetCustomMemberMap(MemberMap); try { serializer.TypeSerialize(Value); } finally { serializer.SetCustomMemberMap(memberMap); } } }
/// <summary> /// 简单 ORM 映射 /// </summary> internal static void Test() { using (AutoCSer.Sql.ModelTable <OrmOnly> sqlTable = AutoCSer.Sql.ModelTable <OrmOnly> .Get()) { AutoCSer.Metadata.MemberMap <OrmOnly> updateMemberMap = sqlTable.CreateMemberMap().Set(value => value.Value); sqlTable.Insert(new OrmOnly { Value = 1 }); foreach (OrmOnly value in sqlTable.Select()) { Console.WriteLine(value.toJson()); sqlTable.Update(new OrmOnly { Id = value.Id, Value = value.Value + 1 }, updateMemberMap); } foreach (OrmOnly value in sqlTable.Select()) { Console.WriteLine(value.toJson()); sqlTable.Delete(value.Id); } } }
internal static bool TestCase() { DisabledMemberMap value = new DisabledMemberMap { Value1 = 1, Value2 = 2, Value3 = 3 }; AutoCSer.Metadata.MemberMap <DisabledMemberMap> serializeMemberMap = AutoCSer.Metadata.MemberMap <DisabledMemberMap> .NewEmpty(); #if DOTNET2 serializeMemberMap.SetMember("Value1"); //添加成员 Value1 serializeMemberMap.SetMember("Value2"); //添加成员 Value2 #else serializeMemberMap.SetMember(member => member.Value1); //添加成员 Value1 serializeMemberMap.SetMember(member => member.Value2); //添加成员 Value2 #endif AutoCSer.BinarySerialize.SerializeConfig serializeMemberMapConfig = new AutoCSer.BinarySerialize.SerializeConfig { MemberMap = serializeMemberMap }; byte[] data = AutoCSer.BinarySerializer.Serialize(value, serializeMemberMapConfig); DisabledMemberMap newValue = AutoCSer.BinaryDeSerializer.DeSerialize <DisabledMemberMap>(data); return(newValue != null && newValue.Value1 == 1 && newValue.Value2 == 2 && newValue.Value3 == 3); }
/// <summary> /// 修改学生处理 /// </summary> /// <param name="cacheValue">当前缓存对象</param> /// <param name="value">修改之后的对象数据</param> /// <param name="oldValue">修改之前的对象数据</param> /// <param name="memberMap">被修改成员位图</param> private static void onUpdated(Student cacheValue, Student value, Student oldValue, AutoCSer.Metadata.MemberMap<SqlModel.Student> memberMap) { if (MemberIndexs.Classes.IsMember(memberMap)) { Class Class = Class.Loader.Cache[oldValue.ClassId]; if (Class != null) Class.SqlLogMember.StudentCount(Class.SqlLogProxyMember.StudentCount - 1); onInserted(cacheValue); } }
public AutoCSer.Metadata.MemberMap SetCustomMemberMap(AutoCSer.Metadata.MemberMap memberMap) { return(Config.SetCustomMemberMap(memberMap)); }
public static void copyForm <T>(this T value, ref T readValue, AutoCSer.Metadata.MemberMap <T> memberMap = null) { AutoCSer.MemberCopy.Copyer <T> .Copy(ref value, readValue, memberMap); }
public static void copyTo <T>(this T value, ref T writeValue, AutoCSer.Metadata.MemberMap <T> memberMap = null) { AutoCSer.MemberCopy.Copyer <T> .Copy(ref writeValue, value, memberMap); }
public static void copyForm <valueType>(this valueType value, ref valueType readValue, AutoCSer.Metadata.MemberMap <valueType> memberMap = null) { AutoCSer.MemberCopy.Copyer <valueType> .Copy(ref value, readValue, memberMap); }
/// <summary> /// 更新数据操作后续处理 /// </summary> /// <param name="value">更新后的数据</param> /// <param name="oldValue">更新前的数据</param> /// <param name="memberMap">更新数据成员位图</param> private static void onUpdated(NowTime value, NowTime oldValue, AutoCSer.Metadata.MemberMap <OrmModel.NowTime> memberMap) { }
/// <summary> /// 数据更新成员位图 /// </summary> /// <param name="value">更新数据</param> /// <param name="memberMap">成员位图</param> protected UpdateMemberMap(tableType value, AutoCSer.Metadata.MemberMap <modelType> memberMap) { this.value = value ?? AutoCSer.Emit.Constructor <tableType> .New(); this.memberMap = memberMap; }
public static void copyTo <valueType>(this valueType value, ref valueType writeValue, AutoCSer.Metadata.MemberMap <valueType> memberMap = null) { AutoCSer.MemberCopy.Copyer <valueType> .Copy(ref writeValue, value, memberMap); }