我在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");
我得到以下错误:
如果少了什么,请看一下,让我知道。
1条答案
按热度按时间7rtdyuoh1#
错误正确您的表定义没有名为的列
employee
带类型employee
. 修改表定义以包含相应的列。更新,基于讨论:您真正需要的是作为c#driver的一部分提供的对象Map器。
用户定义的类型只是一种将事物分组在一起的方法,将它们表示为表中的一列。例如,您可以用street、ctity、post code、state、country字段将address表示为udt,并将此udt作为表中的一列。或者可以将所有这些信息作为单独的列放入表中。但是如果有多个表使用相同的信息,那么使用udt就更容易了,并且每个表有一列。。。