コード例 #1
0
ファイル: Issue533Tests.cs プロジェクト: exileDev/linq2db
        public void Issue533Test([DataSources] string context)
        {
            ResetPersonIdentity(context);

            var ms = new MappingSchema();

            ms.SetConverter <MyString, string?>((obj) =>
            {
                if (obj == null)
                {
                    return(null);
                }
                return(obj.Value);
            });
            ms.SetConverter <MyString, DataParameter>((obj) =>
            {
                if (obj == null)
                {
                    return new DataParameter {
                        DataType = DataType.NVarChar
                    }
                }
                ;
                return(new DataParameter {
                    Value = obj.Value, DataType = DataType.NVarChar
                });
            });
            ms.SetConverter <string, MyString?>((txt) =>
            {
                if (string.IsNullOrEmpty(txt))
                {
                    return(null);
                }
                return(new MyString {
                    Value = txt
                });
            });

            using (var db = GetDataContext(context, ms))
                using (new RestoreBaseTables(db))
                {
                    var obj = new Entity533
                    {
                        FirstName = new MyString {
                            Value = "FirstName533"
                        },
                        LastName = new MyString {
                            Value = "LastName533"
                        },
                    };

                    int id;
                    id = db.InsertWithInt32Identity(obj);

                    var obj2 = db.GetTable <Entity533>().First(_ => _.ID == id);

                    Assert.IsNull(obj2.MiddleName);
                    Assert.AreEqual(obj.FirstName.Value, obj2.FirstName.Value);
                }
        }
コード例 #2
0
ファイル: Issue693Tests.cs プロジェクト: ywscr/linq2db
        public void Issue693Test([DataSources] string context)
        {
            var ms = new MappingSchema();

            ms.SetConverter <Test?, string>((obj) =>
            {
                if (obj != null)
                {
                    return(obj.ToString());
                }
                return(null);
            });

            ms.SetConverter <Test?, DataParameter>((obj) =>
            {
                if (obj != null)
                {
                    return new DataParameter {
                        Value = obj.ToString()
                    }
                }
                ;
                return(new DataParameter {
                    Value = DBNull.Value
                });
            });

            ms.SetConverter <string, Test?>((txt) =>
            {
                if (string.IsNullOrEmpty(txt))
                {
                    return(null);
                }
                return((Test?)Enum.Parse(typeof(Test), txt, true));
            });


            using (var db = GetDataContext(context, ms))
                using (new DeletePerson(db))
                {
                    var obj = new Entity533
                    {
                        FirstName  = "a",
                        MiddleName = Test.A,
                        LastName   = "b",
                        Gender     = Gender.Male
                    };

                    var id1 = Convert.ToInt32(db.InsertWithIdentity(obj));

                    var obj2 = new Entity533
                    {
                        FirstName  = "c",
                        MiddleName = null,
                        LastName   = "d",
                        Gender     = Gender.Male
                    };

                    var id2 = Convert.ToInt32(db.InsertWithIdentity(obj2));

                    var obj3 = db.GetTable <Entity533>().First(_ => _.ID == id1);
                    var obj4 = db.GetTable <Entity533>().First(_ => _.ID == id2);

                    Assert.IsNull(obj4.MiddleName);
                    Assert.NotNull(obj3.MiddleName);
                }
        }
コード例 #3
0
        public void Issue533Test(string context)
        {
            var ms = new MappingSchema();

            ms.SetConverter <MyString, string>((obj) =>
            {
                if (obj == null)
                {
                    return(null);
                }
                return(obj.Value);
            });

            MappingSchema.Default.SetConverter <MyString, DataParameter>((obj) =>
            {
                if (obj == null)
                {
                    return new DataParameter {
                        DataType = DataType.NVarChar
                    }
                }
                ;
                return(new DataParameter {
                    Value = obj.Value, DataType = DataType.NVarChar
                });
            });
            MappingSchema.Default.SetConverter <string, MyString>((txt) =>
            {
                if (string.IsNullOrEmpty(txt))
                {
                    return(null);
                }
                return(new MyString {
                    Value = txt
                });
            });

            using (var db = GetDataContext(context))
            {
                try
                {
                    var obj = new Entity533
                    {
                        FirstName = new MyString {
                            Value = "FirstName533"
                        },
                        LastName = new MyString {
                            Value = "LastName533"
                        },
                    };

                    var id1 = Convert.ToInt32(db.InsertWithIdentity(obj));

                    var obj2 = db.GetTable <Entity533>().First(_ => _.ID == id1);

                    Assert.IsNull(obj2.MiddleName);
                    Assert.AreEqual(obj.FirstName.Value, obj2.FirstName.Value);
                }
                finally
                {
                    db.Person.Delete(_ => _.ID > MaxPersonID);
                }
            }
        }