我有一个c类,如下所示
public class User
{
public string UserId { get; set; }
public string Name { get; set; }
public List<Address> Address { get; set; }
}
public class Address
{
public string Line1 { get; set; }
}
我创建了键空间和表,如下所示
ISession session;
IMapper Mapper;
Table<User> table;
var mapping = MappingConfiguration.Global.Define(
new Map<User>()
.TableName(typeof(User).Name)
.PartitionKey(u => u.UserId))
;
Dictionary<string, string> replication = new Dictionary<string, string>();
replication.Add("class", "SimpleStrategy");
replication.Add("replication_factor", "3");
var cluster = Cluster.Builder()
.AddContactPoints("127.0.1")
.WithPort(9042)
.WithLoadBalancingPolicy(new DCAwareRoundRobinPolicy("test"))
.WithReconnectionPolicy(new FixedReconnectionPolicy(400, 5000, 2 * 60000, 60 * 60000))
.Build();
session = cluster.Connect();
session.CreateKeyspaceIfNotExists("demo1", replication);
session = cluster.Connect("demo1");
table = new Table<User>(session, mapping, typeof(User).Name, "demo1");
table.CreateIfNotExists();
我得到以下错误
cassandra.invalidtypeexception:'clr类型cassandra.address的未知cassandra目标类型'
2条答案
按热度按时间yqlxgs2m1#
你的班级
Address
应该匹配apache cassandra数据库中的字段类型。在本例中,您可能希望使用用户定义类型(udt)。datastax c#驱动程序不支持创建具有
Table<T>.Create()
.理想情况下,应该首先定义模式,然后根据要用于获取数据的查询对模式进行建模。我建议您首先在cql中这样做,然后在c代码中添加Map配置。
nhaq1z212#
请尝试以下操作