Beispiel #1
0
        public void Insert_Fetch_With_Enum()
        {
            var config = new MappingConfiguration().Define(new Map <PlainUser>()
                                                           .ExplicitColumns()
                                                           .PartitionKey(s => s.UserId)
                                                           .Column(s => s.FavoriteColor, c => c.WithDbType <int>())
                                                           .Column(s => s.Name)
                                                           .Column(s => s.UserId, c => c.WithName("id"))
                                                           .TableName("enum_insert_test"));

            //Use linq to create the table
            new Table <PlainUser>(_session, config).CreateIfNotExists();
            var mapper = new Mapper(_session, config);
            var user   = new PlainUser
            {
                UserId        = Guid.NewGuid(),
                Name          = "My user",
                FavoriteColor = RainbowColor.Orange
            };

            mapper.Insert(user, true, 5);
            var retrievedUser = mapper.First <PlainUser>("WHERE id = ?", user.UserId);

            Assert.NotNull(retrievedUser);
            Assert.AreEqual(user.UserId, retrievedUser.UserId);
            Assert.AreEqual(user.Name, retrievedUser.Name);
            Assert.AreEqual(user.FavoriteColor, retrievedUser.FavoriteColor);
        }
Beispiel #2
0
        public void Insert_Batch_With_Options()
        {
            var anotherKeyspace = TestUtils.GetUniqueKeyspaceName().ToLowerInvariant();

            using (var cluster = ClusterBuilder().AddContactPoint(TestCluster.InitialContactPoint)
                                 .WithSocketOptions(new SocketOptions().SetConnectTimeoutMillis(30000))
                                 .Build())
            {
                var session = cluster.Connect();
                session.CreateKeyspace(anotherKeyspace, new Dictionary <string, string>
                {
                    { "class", "SimpleStrategy" },
                    { "replication_factor", "3" }
                });
                session.ChangeKeyspace(anotherKeyspace);

                var config = new MappingConfiguration().Define(new Map <PlainUser>()
                                                               .ExplicitColumns()
                                                               .PartitionKey(s => s.UserId)
                                                               .Column(s => s.FavoriteColor, c => c.WithDbType <int>())
                                                               .Column(s => s.Name)
                                                               .Column(s => s.UserId, c => c.WithName("id"))
                                                               .TableName("batch_with_options_table"));
                //Use linq to create the table
                new Table <PlainUser>(session, config).CreateIfNotExists();
                var mapper = new Mapper(session, config);
                var user1  = new PlainUser
                {
                    UserId        = Guid.NewGuid(),
                    Name          = "My user",
                    FavoriteColor = RainbowColor.Orange
                };
                var user2 = new PlainUser
                {
                    UserId        = Guid.NewGuid(),
                    Name          = "My user 2",
                    FavoriteColor = RainbowColor.Blue
                };
                var user3 = new PlainUser
                {
                    UserId        = Guid.NewGuid(),
                    Name          = "My user 3",
                    FavoriteColor = RainbowColor.Blue
                };
                var batch = mapper.CreateBatch();
                batch.Insert(user1);
                batch.Insert(user2);
                var consistency = ConsistencyLevel.All;
                batch.WithOptions(o => o.SetConsistencyLevel(consistency));
                //Timestamp for BATCH request is supported in Cassandra 2.1 or above.
                if (TestClusterManager.CassandraVersion > Version.Parse("2.1"))
                {
                    var timestamp = DateTimeOffset.UtcNow.Subtract(TimeSpan.FromDays(1));
                    batch.WithOptions(o => o.SetTimestamp(timestamp));
                }
                var ex = Assert.Throws <UnavailableException>(() => mapper.Execute(batch));
                Assert.AreEqual(ConsistencyLevel.All, ex.Consistency,
                                "Consistency level of batch exception should be the same as specified at CqlQueryOptions: ALL");
                Assert.AreEqual(3, ex.RequiredReplicas);
                Assert.AreEqual(1, ex.AliveReplicas);
            }
        }