C#bond中有哪些可用的数据类型?

时间:2017-08-03 20:21:11

标签: c# database database-design object-storage bond

我想知道表示应该包含C#bond格式字段的表的最佳方法是什么?

  • string FirstName
  • string LastName
  • string Email
  • bool注册
  • DateTime DateJoined
  • char Gender
  • 列表与LT;串GT;收藏夹
  • string City
  • string State
  • unit16 Zip
  • string Country
  • 列表与LT;串GT; FrequentPagesURLs

我想要有类似于那种格式的东西

namespace MyProject
{
    struct Key
    {
        0: required string Email;
    }

    struct Value
    {
        0: required string FirstName; 
        1: optional char Gender;
        .
        .
        .
    }
}

我不确定用C#bond格式表示charDateTimeList<string>的最佳方式是什么,以便在Object store中创建表时使用它们。< / p>

2 个答案:

答案 0 :(得分:2)

根据Bond的官方文档,有以下类型:

  

基本类型:bool,uint8,uint16,uint32,uint64,int8,int16,int32,int64,float,double,string,wstring。

     

容器:blob,list,vector,set,map,nullable。

     

用户定义的类型:枚举,结构或绑定,其中T是结构。

但是,文档还解释了如果使用bond生成C#代码,如何生成DateTime,char等。这是在CLI命令中使用以下内容:

  

gbc c#--using =“DateTime = System.DateTime”date_time.bond

using参数是您放置类型别名的位置,例如“char = System.Char; DateTime = System.DateTime”。

我不知道这是否足以帮助您,如果您还有其他需要,请告诉我。

来源:

https://microsoft.github.io/bond/manual/compiler.html

https://microsoft.github.io/bond/manual/bond_cs.html

答案 1 :(得分:2)

我会将性别字段建模为枚举,因为这比char更明确; DateTime字段为uint64,但使用a type converter将其转换为a DateTime struct in C#;并将List<string>字段设为vector<string>

namespace MyProject;

using DateTime=uint64;

enum Gender
{
    Unspecified;
    ...
}

struct Favorite { ... }
struct FrequentPagesURL { ... }

struct SomeType
{
    ...
    7: DateTime DateJoined;
    8: Gender Gender = Unspecified;
    9: vector<Favorite> Favorites;
    ...
    17: vector<FrequentPagesURL> FrequentPagesURLs;
    ...
}

您可能需要考虑将DateJoined字段建模为string / blob并使用类型转换器将其转换为C#中的DateTimeOffset struct depending on your needs。< / p>