2013-09-25 51 views
0

我在使用Neo4jClient与我的Neo4J服务器进行交互的程序中使用decimal类型的属性时遇到问题。Neo4jClient:丢弃的小数点

using System; 
using Neo4jClient; 

namespace TestProject 
{ 
    class Program 
    { 
     static void Main() 
     { 
      var graphClient = new GraphClient(new Uri("http://localhost:7474/db/data")); 
      graphClient.Connect(); 

      const decimal socialFactor = 0.5m; 

      var userIn = new User {Name = "John Doe", SocialFactor = socialFactor}; 
      var nodeRef = graphClient.Create(userIn); 
      var userOut = graphClient.Get(nodeRef).Data; 

      Console.WriteLine(userOut.Name + ", " + userOut.SocialFactor); 
      Console.WriteLine(userOut.SocialFactor == socialFactor ? "win" : "fail!"); 
     } 
    } 

    class User 
    { 
     public string Name { get; set; } 
     public decimal SocialFactor { get; set; } 
    } 
} 

什么程序做的就是插入一个用户节点与0.5(userIn)社会因素纳入Neo4j的,并立即再次检索用户节点(userOut)。问题是userOut.SocialFactor是5而不是0.5!

奇怪的是,当我将类型更改为double时,没有问题,但这显然是我不想做的事情。

这是一个错误?有没有某种解决方法?

感谢, 扬

+0

您使用的是什么版本的Neo4jclient?我正在使用1.0.0.594并复制代码并在控制台应用程序中运行它(很好地提供完整的工作程序btw!),我得到0.5和'Win'。 –

+0

@ChrisSkardon:是的,这正是我正在使用的版本,我得到5并且回退。我发现它必须对我的系统的文化做些什么。我们在这里使用逗号作为小数点。当我将设置更改为使用实际点时,该程序按预期工作。你认为这是一个错误? –

+0

我会用整个代码将它添加到neo4jclient问题页面(https://bitbucket.org/Readify/neo4jclient/issues?status=new&status=open),但我必须说 - 我无法将它发生,如果我添加行'System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(“FR-FR”);'我的代码上面(法国使用',')我仍然得到的结果很好,所以。你在用什么文化,你在哪里改变文化? –

回答

0

原来,是的,这是一个错误,但它最近固定Neo4jClient的version 1.0.0.595