cassandra/datastax客户端未从键空间返回udt对象

lymnna71  于 2021-06-13  发布在  Cassandra
关注(0)|答案(1)|浏览(328)

我在Cassandra创建了udt
员工自定义项

相应的c类如下:

public class Employee
{
    public int emp_id { get; set; }
    public string emp_name { get; set; }
    public int emp_age { get; set; }

}

以及以下代码,用于连接udt并将其Map到相应的c#类:

var cluster = Cluster.Builder()
            .AddContactPoint("localhost")
            .Build();
        ISession session = cluster.Connect("firstkeyspace");

        //session.UserDefinedTypes.Define(UdtMap.For<Employee>().Automap());

        session.UserDefinedTypes.Define(UdtMap.For<Employee>("employee", keyspace: "firstkeyspace"));

        var rs = session.Execute("select * from employee");

在检索时使用以下代码行:

Employee employee = row.GetValue<Employee>("employee");

我得到以下错误:

如果少了什么,请看一下,让我知道。

7rtdyuoh

7rtdyuoh1#

错误正确您的表定义没有名为的列 employee 带类型 employee . 修改表定义以包含相应的列。
更新,基于讨论:您真正需要的是作为c#driver的一部分提供的对象Map器。
用户定义的类型只是一种将事物分组在一起的方法,将它们表示为表中的一列。例如,您可以用street、ctity、post code、state、country字段将address表示为udt,并将此udt作为表中的一列。或者可以将所有这些信息作为单独的列放入表中。但是如果有多个表使用相同的信息,那么使用udt就更容易了,并且每个表有一列。。。

相关问题