C# 您将如何构建此RavenDB文档的模型?
我为RavenDB文档提供了以下结构C# 您将如何构建此RavenDB文档的模型?,c#,model,ravendb,C#,Model,Ravendb,我为RavenDB文档提供了以下结构 { "RpcTechDataCollectionModel": { "Weekend": "March 16 - 17, 2013", "ServiceTitle": "Some Title", "Notes": "", "WeekendServices": [{ "ServiceTime": "", "SiteName": "Bowrid
{
"RpcTechDataCollectionModel": {
"Weekend": "March 16 - 17, 2013",
"ServiceTitle": "Some Title",
"Notes": "",
"WeekendServices": [{
"ServiceTime": "",
"SiteName": "Bowridge",
"SoundOperator": "Rob",
"WorshipLeader": "Daryl",
"Notes": "",
"Songs": [{
"SongName": "Foo",
"MinSpl": "86",
"MaxSpl": "92",
"Note": ""
}, {
"SongName": "Bar",
"MinSpl": "89",
"MaxSpl": "96",
"Note": ""
}]
}, {
"ServiceTime": "",
"SiteName": "Bearspaw",
"SoundOperator": "Peter",
"WorshipLeader": "Tim",
"Notes": "",
"Songs": [{
"SongName": "Das",
"MinSpl": "86",
"MaxSpl": "91",
"Note": ""
}, {
"SongName": "Bar",
"MinSpl": "87",
"MaxSpl": "99",
"Note": ""
}]
}]
}
}
现在我正试图建立一个模型,但我想知道构建它的最佳方式是什么。注意,子对象WeekendService
或Song
都不会在父对象RpcTechCollectionModel
选项一是
namespace MyProject.Models {
using System.Collections.Generic;
public class RpcTechDataCollectionModel{
RpcTechDataCollectionModel(){
this.WeekendServices = new List<WeekendService>();
}
public string Weekend { get; set; }
public string ServiceTitle { get; set; }
public string Notes { get; set; }
public List<WeekendService> WeekendServices { get; set; }
public class WeekendService{
WeekendService(){
this.SongRecords = new List<SongRecord>();
}
public DateTime ServiceTime { get; set; }
public string SiteName { get; set; }
public string SoundOperator { get; set; }
public string WorshipLeader { get; set; }
public string Notes { get; set; }
public List<Song> Songs { get; set; }
public class Song {
public string SongName { get; set; }
public double MinSpl { get; set; }
public double MaxMax { get; set; }
public string Note { get; set; }
}
}
}
}
这并不违反规则,但似乎有点痛苦
这样或那样做的利弊是什么,一种方式被认为是“正确的/首选的”,还是在这种情况下更像是“随波逐流”?嵌套类通常用于隐藏实现细节,从而防止使用者误用它们。由于这些类只是定义数据契约,所以似乎没有什么需要隐藏的。即使您想阻止任何人修改它们(这对于您拥有所有权的数据契约来说是有意义的),最好将它们密封起来
我会将它们放在不同的文件中,也许会分组到文件夹中。这很有意义。我认为,如果我们需要与当前实现分离的信息,那么将其全部解耦将增加灵活性。
public class RpcTechDataCollectionModel{
RpcTechDataCollectionModel(){
this.WeekendServices = new List<WeekendService>();
}
public string Weekend { get; set; }
public string ServiceTitle { get; set; }
public string Notes { get; set; }
public List<WeekendService> WeekendServices { get; set; }
}
public class WeekendService{
WeekendService(){
this.SongRecords = new List<SongRecord>();
}
public DateTime ServiceTime { get; set; }
public string SiteName { get; set; }
public string SoundOperator { get; set; }
public string WorshipLeader { get; set; }
public string Notes { get; set; }
public List<Song> Songs { get; set; }
}
public class Song {
public string SongName { get; set; }
public double MinSpl { get; set; }
public double MaxMax { get; set; }
public string Note { get; set; }
}