我在尝试将我的类型的属性映射到Cassandra中的映射时出现问题。F中的Cassandra CQL映射#
我有工作在C#,但我与F#挣扎
我得到的错误是:堆栈跟踪:[System.ArgumentOutOfRangeException:表达式x =>新Tuple`2(x.Id,ToFSharpFunc (x => x.WithName(“player_id”)))不是属性或字段。参数名称:表达式]
第26行,如果我删除了“fun(x:ColumnMap) - > x.WithName(”player_id“)”它会编译,但不会映射到正确的表列。我的模型属性名称是“ID”,但我需要它映射到“player_id”
open Cassandra
open Cassandra.Mapping
open System
type Ranking =
{ Id : Guid
Alias : string
Kills : int
Deaths : int }
type Player = {Id: Guid; Alias: string; Dob: DateTime; FullName: string}
type CassyMappings() =
inherit Cassandra.Mapping.Mappings()
do
base.For<Player>()
.TableName("players")
.PartitionKey("player_id")
.Column(fun(x:Player)-> x.Id)
.Column(fun(x:Player)-> x.Alias)
.Column(fun(x:Player)-> x.FullName)
.Column(fun(x:Player)-> x.Dob) |> ignore
base.For<Ranking>()
.TableName("rankings")
.PartitionKey("player_id")
.Column(fun (x : Ranking) -> x.Id, fun(x:ColumnMap)->x.WithName("player_id"))
.Column(fun (x : Ranking) -> x.Alias)
.Column(fun (x : Ranking) -> x.Kills)
.Column(fun (x : Ranking) -> x.Deaths) |> ignore
MappingConfiguration.Global.Define<CassyMappings>()
printfn "Works fine!"
https://dotnetfiddle.net/8IiYhg
这里是将C#http://www.datastax.com/dev/blog/csharp-driver-cassandra-new-mapper-linq-improvements
把你的代码在实际的问题。此外,请解释什么“挣扎与F#的意思” - 包括任何错误消息等 –
当然,没问题..我创建了一个DotNetFiddle它[这里](https://dotnetfiddle.net/8IiYhg) 我的错误是“堆栈跟踪: [System.ArgumentOutOfRangeException:Expression x => new Tuple'2(x.Id,ToFSharpFunc(x => x.WithName(”player_id“)))不是属性或字段 参数名称:expression]“ –
在第26行,如果我删除了”fun(x:ColumnMap) - > x.WithName(“player_id”)“它会编译但不会映射到正确的表列。我的模型属性名称是“Id”,但我需要它映射到“player_id” –