コード例 #1
0
        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);
        }
コード例 #2
0
 /// <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]));
     }
 }
コード例 #3
0
 public SoapSerializedObject(object graph)
     : base(graph)
 {
     Method = SerializationMethod.Soap;
     using (var stream = new MemoryStream()) {
         SerializerTool.Serialize(graph, stream, _formatter);
         SerializedValue = stream.ToArray();
     }
 }
コード例 #4
0
        /// <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));
        }
コード例 #5
0
        /// <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));
            }
        }
コード例 #6
0
        /// <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));
            }
        }
コード例 #7
0
        /// <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());
            }
        }
コード例 #8
0
        /// <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());
            }
        }
コード例 #9
0
 public override ISerializer <RequestMessage> GetRequestSerializer()
 {
     return(SerializerTool.CreateSerializer <RequestMessage>(SerializationOptions.Json));
 }
コード例 #10
0
 public override ISerializer <ResponseMessage> GetResponseSerializer()
 {
     return(SerializerTool.CreateSerializer <ResponseMessage>(SerializationOptions.Binary));
 }
コード例 #11
0
 public virtual ISerializer <RequestMessage> GetRequestSerializer()
 {
     return(SerializerTool.CreateSerializer <RequestMessage>(SerializationOptions.Binary));
 }