public void TransientTest() { var transientCustomer = new Customer("A"); Assert.IsTrue(transientCustomer.IsTransient); // only check identity value is null or default id Assert.IsTrue(Repository.IsTransient(transientCustomer)); Assert.AreEqual(transientCustomer, new Customer("A")); // 둘다 아무 것도 바뀌지 않았으므로 var customer2 = SerializerTool.DeepCopy(TestCustomer); customer2.CompanyName = base.TestCustomer.CompanyName; Assert.AreEqual(base.TestCustomer, customer2); // 둘다 Transient이고, 같은 속성값들을 가진다. var savedCustomer = Repository.Get(base.TestCustomer.Id, LockMode.None); Assert.AreEqual(savedCustomer.CompanyName, TestCustomer.CompanyName); Assert.IsFalse(savedCustomer.IsTransient); Assert.IsTrue(savedCustomer != transientCustomer); Assert.AreNotEqual(savedCustomer, transientCustomer); // Persistent object .vs. transient object Assert.AreEqual(savedCustomer, TestCustomer); // Persistent object .vs. transient object (but id is equal ) Assert.IsTrue(savedCustomer.Equals(TestCustomer)); Assert.IsFalse(savedCustomer.IsTransient); Assert.IsFalse(Repository.IsTransient(savedCustomer)); // Assigned이지만 EntityStateInterceptor를 이용하면 AssignedId를 가지는 Entity도 Transient인지를 파악할 수 있다. // Assert.IsTrue(base.TestCustomer.IsTransient); Assert.IsTrue(Repository.IsTransient(TestCustomer)); // Console.WriteLine("Test NorthwindCustomer: " + savedCustomer); }
/// <summary> /// 지역화 정보를 가진 엔티티간에 지역화 정보를 복사한다. /// </summary> /// <typeparam name="TLocale">Locale 정보를 나타내는 class의 형식</typeparam> /// <param name="dest">복사될 지역화 엔티티</param> /// <param name="src">원본 지역화 엔티티</param> public static void CopyLocales <TLocale>(this ILocaledEntity <TLocale> dest, ILocaledEntity <TLocale> src) where TLocale : ILocaleValue { foreach (var culture in src.LocaleKeys) { dest.AddLocale(culture, SerializerTool.DeepCopy(src.Locales[culture])); } }
public SoapSerializedObject(object graph) : base(graph) { Method = SerializationMethod.Soap; using (var stream = new MemoryStream()) { SerializerTool.Serialize(graph, stream, _formatter); SerializedValue = stream.ToArray(); } }
/// <summary> /// 역직렬화를 통해, 객체를 반환한다. /// </summary> /// <returns></returns> public override object GetDeserializedObject() { if (SerializedValue == null) { return(null); } if (log.IsDebugEnabled) { log.Debug("직렬화 객체 (수형[{0}])에 대해 [{1}] 역직렬화를 수행합니다... ", ObjectTypeName, Method); } using (var stream = new MemoryStream((byte[])SerializedValue)) return(SerializerTool.Deserialize <object>(stream, _formatter)); }
/// <summary> /// Serialized 된 정보를 Deserialize 를 수행해서 객체로 반환한다. /// </summary> /// <param name="data">serialized data to be deserialized.</param> /// <returns>deserialized object</returns> public override T Deserialize(byte[] data) { if (IsDebugEnabled) { log.Debug("Binary 형식으로 Serialized 된 정보를 Deserialize 를 수행해서 객체로 반환한다... data=[{0}]", data); } if (data == null || data.Length == 0) { return(default(T)); } using (var ms = new MemoryStream(data)) { return(SerializerTool.Deserialize <T>(ms, _formatter)); } }
/// <summary> /// Binary 형식으로 Serialized 된 정보를 Deserialize 를 수행해서 객체로 반환한다. /// </summary> /// <param name="data">직렬화된 정보</param> /// <returns>역직렬화 객체</returns> public override object Deserialize(byte[] data) { if (IsDebugEnabled) { log.Debug("Binary 형식으로 Serialized 된 정보를 Deserialize 를 수행해서 객체로 반환합니다..."); } if (data == null || data.Length == 0) { return(null); } using (var ms = new MemoryStream(data)) { return(SerializerTool.Deserialize <object>(ms, _formatter)); } }
/// <summary> /// 지정된 객체를 Serialize를 수행한다. /// </summary> /// <param name="graph">object to be serialized.</param> /// <returns>직렬화된 객체, graph가 null이면, 길이가 0인 byte[] 반환</returns> public override byte[] Serialize(T graph) { if (IsDebugEnabled) { log.Debug("지정된 객체를 Binary 형식으로 Serialize를 수행합니다... graph=[{0}]", graph); } if (ReferenceEquals(graph, null)) { return(SerializerTool.EmptyBytes); } using (var ms = new MemoryStream()) { SerializerTool.Serialize(graph, ms, _formatter); return(ms.ToArray()); } }
/// <summary> /// 지정된 객체를 Binary 형식으로 Serialize를 수행합니다. /// </summary> /// <param name="graph"></param> /// <returns>직렬화된 객체, graph가 null이면, 길이가 0인 byte[] 반환</returns> public override byte[] Serialize(object graph) { if (IsDebugEnabled) { log.Debug("지정된 객체를 Binary 형식으로 Serialize를 수행합니다... graph=[{0}]", graph); } if (ReferenceEquals(graph, null)) { if (IsDebugEnabled) { log.Debug("직렬화 대상 객체가 null이라 new byte[0]을 반환합니다."); } return(new byte[0]); } using (var ms = new MemoryStream()) { SerializerTool.Serialize(graph, ms, _formatter); return(ms.ToArray()); } }
public override ISerializer <RequestMessage> GetRequestSerializer() { return(SerializerTool.CreateSerializer <RequestMessage>(SerializationOptions.Json)); }
public override ISerializer <ResponseMessage> GetResponseSerializer() { return(SerializerTool.CreateSerializer <ResponseMessage>(SerializationOptions.Binary)); }
public virtual ISerializer <RequestMessage> GetRequestSerializer() { return(SerializerTool.CreateSerializer <RequestMessage>(SerializationOptions.Binary)); }