예제 #1
0
    public void _04_CanSaveOneToMany()
    {
        using (var session = TestDbSessionFactory.OpenSession()) {
            using (var tx = session.BeginTransaction()) {
                try {
                    var author = new Author();
                    author.Name = "beginor";
                    session.Save(author);
                    var book = new Book();
                    book.Title  = "learning nhibernate";
                    book.Author = author;
                    session.Save(book);
                    session.Flush();

                    session.Delete(book);
                    session.Delete(author);
                    tx.Commit();
                }
                catch (Exception) {
                    tx.Rollback();
                    throw;
                }
            }
        }
    }
 public void _03_CanQueryScalar()
 {
     using (var session = TestDbSessionFactory.OpenSession()) {
         var query      = session.GetNamedQuery("name_test_03");
         var booksCount = query.List <long>().First();
         Assert.True(booksCount > 0);
     }
 }
예제 #3
0
 public void _01_CanQueryManyToOne()
 {
     using (var session = TestDbSessionFactory.OpenSession()) {
         var query = session.Query <Book>().Select(b => b.Author);
         var data  = query.ToList();
         Console.WriteLine(data.Count);
     }
 }
    public void _01_CanQueryClass()
    {
        using (var session = TestDbSessionFactory.OpenSession()) {
            var query = session.GetNamedQuery("name_test_01");
            var books = query.List <Book>();

            Assert.True(books.Count > 0);
        }
    }
 public void _02_CanQueryClassWithParam()
 {
     using (var session = TestDbSessionFactory.OpenSession()) {
         var query = session.GetNamedQuery("name_test_02");
         query.SetInt32("authorid", 2);
         var books = query.List <Book>();
         Assert.True(books.Count > 0);
     }
 }
    public void _05_CanQueryDynamicColumns()
    {
        using (var session = TestDbSessionFactory.OpenSession()) {
            var query = session.GetNamedQuery("name_test_05");
            var books = query.List();

            Assert.True(books.Count > 0);
        }
    }
 public void _04_CanQueryScalarWithParam()
 {
     using (var session = TestDbSessionFactory.OpenSession()) {
         var query = session.GetNamedQuery("name_test_04");
         Assert.True(query.NamedParameters.Length > 0);
         query.SetInt32("authorid", 1);
         Assert.True(query.NamedParameters.Length > 0);
         var booksCount = query.List <long>().First();
         Assert.True(booksCount > 0);
     }
 }
예제 #8
0
 public void _02_CanInsertSnowFlakeId()
 {
     using (var session = TestDbSessionFactory.OpenSession()) {
         var entity = new SnowFlakeTestEntity {
             Name = Guid.NewGuid().ToString("N")
         };
         session.Save(entity);
         Assert.True(entity.Id > 0);
         Console.WriteLine($"Id: {entity.Id}");
     }
 }
예제 #9
0
 public void _02_CanQueryOneToMany()
 {
     using (var session = TestDbSessionFactory.OpenSession()) {
         var query = session.Query <Author>().Select(a => new {
             Author = a,
             Books  = a.Books
         });
         var data = query.ToList();
         Console.WriteLine(data.Count);
     }
 }
예제 #10
0
    public void _01_CanQueryXmlEntity()
    {
        using var session = TestDbSessionFactory.OpenSession();
        var entities = session.Query <XmlTestEntity>().ToList();

        IsTrue(entities.Count >= 0);
        foreach (var entity in entities)
        {
            Console.WriteLine($"id: {entity.Id}");
            Console.WriteLine($"statement: {entity.Statement}");
        }
    }
예제 #11
0
 public void _01_CanQuerySnowFlakeId()
 {
     using (var session = TestDbSessionFactory.OpenSession()) {
         var entities = session.Query <SnowFlakeTestEntity>()
                        .ToList();
         foreach (var entity in entities)
         {
             Assert.True(entity.Id > 0);
             Console.WriteLine(JsonSerializer.Serialize(entity));
         }
     }
 }
예제 #12
0
    public void _02_CanSaveXmlEntity()
    {
        using var session = TestDbSessionFactory.OpenSession();
        var xmlDoc = new XmlDocument();

        xmlDoc.LoadXml("<Statement></Statement>");
        var entity = new XmlTestEntity {
            Statement = xmlDoc
        };

        session.Save(entity);
        Greater(entity.Id, 0);
        Console.WriteLine(entity.Id);
    }
예제 #13
0
 public void _03_CanQueryReference()
 {
     using (var session = TestDbSessionFactory.OpenSession()) {
         var query = from book in session.Query <Book>()
                     select new {
             BookId   = book.BookId,
             AuthorId = book.Author.AuthorId
         };
         var data = query.ToList();
         foreach (var d in data)
         {
             Console.WriteLine($"{d.AuthorId}, {d.BookId}");
         }
     }
 }
예제 #14
0
    public void CanUseTypeHandler()
    {
        using (var session = TestDbSessionFactory.OpenSession()) {
            var conn = session.Connection;
            Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true;
            SqlMapper.AddTypeHandler(new DateTimeHandler());
            var entity = conn.Query <TestTableEntity>(
                "select * from public.test_table order by update_time limit 1"
                ).FirstOrDefault();
            Assert.NotNull(entity);

            var updated = conn.Execute(
                "update public.test_table set update_time = @updateTime where id = @id",
                new { id = entity.Id, updateTime = DateTime.Now }
                );
            Assert.AreEqual(1, updated);
        }
    }
예제 #15
0
    public void CanQueryAuthors()
    {
        using (var session = TestDbSessionFactory.OpenSession()) {
            var conn    = session.Connection;
            var authors = conn.Query <AuthorEntity>(
                "select * from public.authors"
                );
            Assert.Greater(authors.Count(), 0);

            authors = conn.Query <AuthorEntity>(
                "select * from public.authors where authorid = any(@Ids)",
                new {
                Ids = new [] { 1, 2, 3 }.AsEnumerable()
            }
                );
            Assert.LessOrEqual(authors.Count(), 3);
        }
    }
예제 #16
0
    public void _01_CanSetupSessionFactory()
    {
        Assert.IsNotNull(TestDbSessionFactory);

        var dvdRentalSession = TestDbSessionFactory.OpenSession();
        var connStr          = dvdRentalSession.Connection.ConnectionString;

        Console.WriteLine(connStr);
        dvdRentalSession.Close();

        var testDbSession = TestDbSessionFactory.OpenSession();
        var connStr2      = testDbSession.Connection.ConnectionString;

        Console.WriteLine(connStr2);
        testDbSession.Close();

        Assert.AreNotEqual(connStr, connStr2);
    }
예제 #17
0
 public void _07_CanQueryMoniData()
 {
     using (var session = TestDbSessionFactory.OpenSession()) {
         var moniData = new MoniData {
             MoniTime    = DateTime.Now,
             StationId   = 1,
             ItemId      = 1,
             Value       = (decimal)0.003d,
             Description = "test"
         };
         session.Save(moniData);
         session.Flush();
         var query = session.Query <MoniData>();
         var data  = query.ToList();
         Assert.True(data.Count > 0);
         session.Delete(moniData);
         session.Flush();
     }
 }
예제 #18
0
    public void _01_CanDoCrud()
    {
        using (var session = TestDbSessionFactory.OpenSession()) {
            var entity = new TestEntity {
                Name       = "Test 1",
                Tags       = new [] { "hello", "world" },
                JsonField  = JsonSerializer.Deserialize <JsonElement>("{ \"val\": 1 }"),
                JsonbField = JsonSerializer.Deserialize <JsonElement>("{ \"val\": 1 }"),
                UpdateTime = DateTime.Now,
                Int16Arr   = new short[] { 1, 2, 3 },
                Int32Arr   = new [] { 1, 2, 3 },
                Int64Arr   = new [] { 1L, 2L, 3L },
                FloatArr   = new [] { 1.1F, 2.2F, 3.3F },
                DoubleArr  = new [] { 1.1, 2.2, 3.3 },
                BooleanArr = new [] { true, false }
            };
            session.Save(entity);
            session.Flush();
            session.Clear();

            Assert.True(entity.Id > 0);

            Console.WriteLine($"entity id: {entity.Id}");
        }

        using (var session = TestDbSessionFactory.OpenSession()) {
            var query    = session.Query <TestEntity>();
            var entities = query.ToList();
            Assert.NotNull(entities);
            Console.WriteLine($"Entity count: {entities.Count}");

            using (var tx = session.BeginTransaction()) {
                foreach (var e in entities)
                {
                    Console.WriteLine(JsonSerializer.Serialize(e));
                    session.Delete(e);
                }
                tx.Commit();
            }
        }
    }
예제 #19
0
    public void _02_CanSaveTypedJson()
    {
        using var session = TestDbSessionFactory.OpenSession();
        var json = new JsonValue {
            Value = new ConnectionString {
                Server   = "127.0.0.1",
                Port     = 1433,
                Database = "northwind",
                Username = "******",
                Password = "******"
            }
        };

        session.Save(json);
        session.Flush();
        Assert.Greater(json.Id, 0);
        Console.WriteLine(json.Id);
        var val = session.Get <JsonValue>(json.Id);

        Assert.NotNull(val);
        Assert.AreEqual(json.Id, val.Id);
        session.Delete(json);
        session.Flush();
    }
예제 #20
0
 private ISession OpenSession()
 {
     return(TestDbSessionFactory.OpenSession());
 }