Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Datastax c#Cassandra在更新到3.X后引发异常_C#_Cassandra_Datastax - Fatal编程技术网

Datastax c#Cassandra在更新到3.X后引发异常

Datastax c#Cassandra在更新到3.X后引发异常,c#,cassandra,datastax,C#,Cassandra,Datastax,我刚刚将驱动程序从2.7.3升级到3.0.3,似乎Mapper.Single()做了一些奇怪的事情。它只是在旧版本上工作,但现在抛出了一个异常 Exception thrown: 'System.ArgumentException' in Cassandra.dll ("Argument types do not match") 模式: CREATE TABLE IF NOT EXISTS client ( id uuid PRIMARY KEY, timezone froze

我刚刚将驱动程序从2.7.3升级到3.0.3,似乎Mapper.Single()做了一些奇怪的事情。它只是在旧版本上工作,但现在抛出了一个异常

Exception thrown: 'System.ArgumentException' in Cassandra.dll ("Argument types do not match")
模式:

CREATE TABLE IF NOT EXISTS client (
    id uuid PRIMARY KEY,
    timezone frozen<timezone>,
    language frozen<language>,
    bank set<frozen<bank>>,
    name text,
    country frozen<country>
);

CREATE TYPE IF NOT EXISTS timezone (
    id uuid,
    name text,
    time int
);

CREATE TYPE IF NOT EXISTS language (
    id uuid,
    name text,
    iso text
);

CREATE TYPE IF NOT EXISTS bank (
    id uuid,
    name text,
    number int
);
CREATE TYPE IF NOT EXISTS country (
    id uuid,
    name text,
    iso2 text,
    iso3 text
);
如果客户端不存在,则创建表(
id uuid主键,
时区冻结,
语言冻结,
银行集合,
名称文本,
国家冻结
);
如果时区不存在,则创建类型(
id uuid,
名称文本,
时间整数
);
如果语言不存在,则创建类型(
id uuid,
名称文本,
iso文本
);
创建类型(如果不存在)(
id uuid,
名称文本,
整数
);
如果国家/地区不存在,则创建类型(
id uuid,
名称文本,
iso2文本,
iso3文本
);
映射

For<Client>()
            .TableName("client")
                  .PartitionKey(u => u.Id)
                  .Column(u => u.Id, cm => cm.WithName("id"))
                  .Column(u => u.Name, cm => cm.WithName("name").WithSecondaryIndex())
                  .Column(u => u.Timezone, cm => cm.WithName("timezone"))
                  .Column(u => u.Language, cm => cm.WithName("language"))
                  .Column(u => u.Country, cm => cm.WithName("country"))
                  .Column(u => u.Banks, cm => cm.WithName("bank"));


UdtMap.For<Timezone>()
                 .Map(u => u.Id, "id")
                 .Map(u => u.Name, "name")
                 .Map(u => u.Time, "time")
UdtMap.For<Bank>()
                .Map(u => u.Id, "id")
                .Map(u => u.Number, "number")
                .Map(u => u.Name, "name")
UdtMap.For<Language>()
                  .Map(u => u.Id, "id")
                  .Map(u => u.Name, "name")
                  .Map(u => u.Iso, "iso")
UdtMap.For<Country>()
               .Map(u => u.Id, "id")
               .Map(u => u.Name, "name")
               .Map(u => u.Iso2, "iso2")
               .Map(u => u.Iso3, "iso3")
() .TableName(“客户”) .PartitionKey(u=>u.Id) .Column(u=>u.Id,cm=>cm.WithName(“Id”)) .Column(u=>u.Name,cm=>cm.WithName(“Name”).WithSecondaryIndex()) .列(u=>u.时区,cm=>cm.WithName(“时区”)) .Column(u=>u.Language,cm=>cm.WithName(“语言”)) .列(u=>u.Country,cm=>cm.WithName(“国家”)) .列(u=>u.Banks,cm=>cm.WithName(“银行”); UdtMap.For() .Map(u=>u.Id,“Id”) .Map(u=>u.Name,“Name”) .Map(u=>u.Time,“Time”) UdtMap.For() .Map(u=>u.Id,“Id”) .Map(u=>u.Number,“Number”) .Map(u=>u.Name,“Name”) UdtMap.For() .Map(u=>u.Id,“Id”) .Map(u=>u.Name,“Name”) .Map(u=>u.Iso,“Iso”) UdtMap.For() .Map(u=>u.Id,“Id”) .Map(u=>u.Name,“Name”) .Map(u=>u.Iso2,“Iso2”) .Map(u=>u.Iso3,“Iso3”) C#代码

公共静态类CassandraConnection
{
私有静态集群;
公共静态字符串键空间{get;set;}
公共静态字符串[]地址{get;set;}
公共静态字符串用户名{get;set;}
公共静态字符串密码{get;set;}
公共静态ISession会话{get;set;}
公共静态映射配置映射配置{get;set;}
公共静态IMapper映射程序{get;set;}
公共静态无效连接()
{
Addresses=CloudConfigurationManager.GetSetting(“Cassandra.Addresses”).Split(“;”);
Keyspace=CloudConfigurationManager.GetSetting(“Cassandra.Keyspace”);
Username=CloudConfigurationManager.GetSetting(“Cassandra.Username”);
Password=CloudConfigurationManager.GetSetting(“Cassandra.Password”);
if(String.IsNullOrEmpty(用户名))
{
CassandraConnection.Cluster=Cluster.Builder().AddContactPoints(Addresses.Build();
}
其他的
{
CassandraConnection.Cluster=Cluster.Builder()。添加联系人(地址)。使用凭据(用户名、密码)。Build();
}
CassandraConnection.Session=CassandraConnection.Cluster.Connect(键空间);
MappingConfiguration.Global.Define();
Define(UdtCassandra.Udts());
CassandraConnection.Mapper=新映射器(CassandraConnection.Session);
}
}
公共类CassandraRepository:IRepository,其中T:BaseDomain
{
公共T GetById(T实体)
{
if(CassandraConnection.Session==null)
{
CassandraConnection.Conectar();
}
如果(实体!=null)
{
返回CassandraConnection.Mapper.Fetch(“其中id=?”,entity.id).FirstOrDefault();//这应该只是SingleOrDefault(),但我正在测试东西;
}
返回默认值(T);
}
}
堆栈跟踪

 em System.Linq.Expressions.Expression.Condition(Expression test, Expression ifTrue, Expression ifFalse)
   em Cassandra.Mapping.MapperFactory.GetExpressionToGetColumnValueFromRow(ParameterExpression row, CqlColumn dbColumn, Type pocoDestType)
   em Cassandra.Mapping.MapperFactory.CreateMapperForPoco[T](RowSet rows, PocoData pocoData)
   em Cassandra.Mapping.MapperFactory.CreateMapper[T](RowSet rows)
   em Cassandra.Mapping.MapperFactory.<>c__DisplayClass1`1.<GetMapper>b__0(Tuple`2 _)
   em System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
   em Cassandra.Mapping.MapperFactory.GetMapper[T](String cql, RowSet rows)
   em Cassandra.Mapping.Mapper.<>c__DisplayClass7`1.<FetchAsync>b__6(Statement s, RowSet rs)
   em Cassandra.Mapping.Mapper.<>c__DisplayClass2`1.<>c__DisplayClass4.<ExecuteAsyncAndAdapt>b__1(Task`1 t2)
   em Cassandra.Tasks.TaskHelper.DoNext[TIn,TOut](Task`1 task, Func`2 next)
   em Cassandra.Tasks.TaskHelper.WaitToComplete(Task task, Int32 timeout)
   em Cassandra.Tasks.TaskHelper.WaitToComplete[T](Task`1 task, Int32 timeout)
   em Cassandra.Mapping.Mapper.Fetch[T](Cql cql)
   em Cassandra.Mapping.Mapper.Fetch[T](String cql, Object[] args)
   em CassandraWebTest.Repository.Cassandra.CassandraRepository`1.GetById(T entity) na C:\Users\devb0194\Source\Workspaces\CassandraWebTestV3\CassandraWebTest.Repository\Cassandra\CassandraRepository.cs:linha 124
   em CassandraWebTest.Business.Security.Client.GetById(Client Client) na C:\Users\devb0194\Source\Workspaces\CassandraWebTestV3\CassandraWebTest.Business\Security\Client.cs:linha 63
   em CassandraWebTest.Business.Security.UsuarioAutenticacao.Authenticate(UsuarioAutenticacao usuarioAutenticacao) na C:\Users\devb0194\Source\Workspaces\CassandraWebTestV3\CassandraWebTest.Business\Security\UsuarioAutenticacao.cs:linha 95
   em CassandraWebTest.Web.Controllers.LoginController.Authenticate(String usuario, String senha, Boolean persistente) na C:\Users\devb0194\Source\Workspaces\CassandraWebTestV3\Web\CassandraWebTest.Web\Controllers\LoginController.cs:linha 38
em System.Linq.Expressions.Expression.Condition(表达式测试、表达式ifTrue、表达式ifFalse)
em Cassandra.Mapping.MapperFactory.GetExpressionToGetColumnValueFromRow(ParameterExpression行,CqlColumn dbColumn,类型pocoDestType)
em Cassandra.Mapping.MapperFactory.CreateMapperForPoco[T](行集行,PoCoDataPoCoDataPoCoData)
em Cassandra.Mapping.MapperFactory.CreateMapper[T](行集行)
em Cassandra.Mapping.MapperFactory.c_uuuudisplayClass1`1.b_uuu0(元组`2\u0)
em System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey,Func`2 valueFactory)
em Cassandra.Mapping.MapperFactory.GetMapper[T](字符串cql,行集行)
em Cassandra.Mapping.Mapper.c_uuuudisplayClass7`1.b_uuuu6(语句s,行集rs)
em Cassandra.Mapping.Mapper.c_uuudisplayClass2`1.c_uudisplayClass4.b_uu1(任务`1 t2)
em Cassandra.Tasks.TaskHelper.DoNext[TIn,TOut](任务'1任务,函数'2下一步)
em Cassandra.Tasks.TaskHelper.WaitToComplete(任务任务,Int32超时)
em Cassandra.Tasks.TaskHelper.WaitToComplete[T](任务'1任务,Int32超时)
em Cassandra.Mapping.Mapper.Fetch[T](Cql-Cql)
em Cassandra.Mapping.Mapper.Fetch[T](字符串cql,对象[]args)
em CassandraWebTest.Repository.Cassandra.CassandraRepository`1.GetById(T实体)na C:\Users\devb0194\Source\workspace\cassandrawebtv3\CassandraWebTest.Repository\Cassandra\CassandraRepository.cs:linha 124
em CassandraWebTest.Business.Security.Client.GetById(客户端客户端)na C:\Users\devb0194\Source\workspace\cassandrawebtv3\CassandraWebTest.Business\Security\Client.cs:linha 63
em CassandraWebTest.Business.Security.usuarioautenticatao.Authenticate(usuarioautenticatao usuarioautenticatao)na C:\Users\devb0194\Source\workspace\CassandraWebTestV3\CassandraWebTest.Business\Security\usuarioautenticatao.cs:linha 95
em CassandraWebTest.Web.Controllers.LoginController.Authenticate(字符串usuario、字符串senha、布尔persistente)na C:\Users\devb0194\Source\workspace\cassandrawebtv3\Web\CassandraWeb
 em System.Linq.Expressions.Expression.Condition(Expression test, Expression ifTrue, Expression ifFalse)
   em Cassandra.Mapping.MapperFactory.GetExpressionToGetColumnValueFromRow(ParameterExpression row, CqlColumn dbColumn, Type pocoDestType)
   em Cassandra.Mapping.MapperFactory.CreateMapperForPoco[T](RowSet rows, PocoData pocoData)
   em Cassandra.Mapping.MapperFactory.CreateMapper[T](RowSet rows)
   em Cassandra.Mapping.MapperFactory.<>c__DisplayClass1`1.<GetMapper>b__0(Tuple`2 _)
   em System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
   em Cassandra.Mapping.MapperFactory.GetMapper[T](String cql, RowSet rows)
   em Cassandra.Mapping.Mapper.<>c__DisplayClass7`1.<FetchAsync>b__6(Statement s, RowSet rs)
   em Cassandra.Mapping.Mapper.<>c__DisplayClass2`1.<>c__DisplayClass4.<ExecuteAsyncAndAdapt>b__1(Task`1 t2)
   em Cassandra.Tasks.TaskHelper.DoNext[TIn,TOut](Task`1 task, Func`2 next)
   em Cassandra.Tasks.TaskHelper.WaitToComplete(Task task, Int32 timeout)
   em Cassandra.Tasks.TaskHelper.WaitToComplete[T](Task`1 task, Int32 timeout)
   em Cassandra.Mapping.Mapper.Fetch[T](Cql cql)
   em Cassandra.Mapping.Mapper.Fetch[T](String cql, Object[] args)
   em CassandraWebTest.Repository.Cassandra.CassandraRepository`1.GetById(T entity) na C:\Users\devb0194\Source\Workspaces\CassandraWebTestV3\CassandraWebTest.Repository\Cassandra\CassandraRepository.cs:linha 124
   em CassandraWebTest.Business.Security.Client.GetById(Client Client) na C:\Users\devb0194\Source\Workspaces\CassandraWebTestV3\CassandraWebTest.Business\Security\Client.cs:linha 63
   em CassandraWebTest.Business.Security.UsuarioAutenticacao.Authenticate(UsuarioAutenticacao usuarioAutenticacao) na C:\Users\devb0194\Source\Workspaces\CassandraWebTestV3\CassandraWebTest.Business\Security\UsuarioAutenticacao.cs:linha 95
   em CassandraWebTest.Web.Controllers.LoginController.Authenticate(String usuario, String senha, Boolean persistente) na C:\Users\devb0194\Source\Workspaces\CassandraWebTestV3\Web\CassandraWebTest.Web\Controllers\LoginController.cs:linha 38