コード例 #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]));
     }
 }