C#项目的面包店链记录每个品牌,包括成分和实际配方等。似乎有点太多自由形式为像我这样的人做了很多SQL。我想到了MongoDB。 启动了典型的Type,数据库接口和Repository类,然后我意识到我已经习惯将所有内容映射到Type类来定义每个属性/列。我选择MongoDB的原因是无法准确确定多少列。有时候他们按照一定的顺序和书中的书写,有时他们只是写完全自由形式,随意。在Type中预先定义它们是不可能的。当然,解决方法是组成20个属性/列,因为它们永远不会使用这么多。我知道MongoDB也有架构。但是,这种方式简单地回到了通常的固定模式SQL。
如果MongoDB仍然是数据库选择,C#可能具有以下类型选项:
- 将所有内容捕获成一个大字符串(制作和配方)
醇>
Bakery{
int UserId,
string UserName,
Datetime makeTime,
string make,
string recipe
}
- 有点组织,缺点是它无法处理非配对集合,例如水平3+字段。
醇>
Bakery{
int UserId,
string UserName,
Datetime makeTime,
iCollection<make> makes,
iCollection<recipe> recipes
}
public class make
{
string fieldName,
string actualValue
}
public class recipe
{
string ingredientName,
string dose
}
- 每行/每个文档预先定义最多20个字段,我宁愿回到SQL。
醇>
Bakery{
int UserId,
string UserName,
Datetime makeTime,
iCollection<make> makes,
iCollection<recipe> recipes
}
public class make
{
string fieldName1, string actualValue1,
...
string fieldName20, string actualValue20
}
public class recipe
{
string ingredientName1, string dose1,
...
string ingredientName20, string dose20
}
必须能够查询项目和值(如果存在)。需要一些专家建议。谢谢。