所有
在我们的应用程序中,有一个Log Model类和一个LogEvent Model Class。 日志模型类(一对多关系)LogEvent模型类。
这是Log Model Class(一面)
public class ELLCsLog : ELLCsInterfaceLog
{
public Object Id { get; set; }
public int UserID { get; set; }
public DateTime DateTimeOfInterest { get; set; }
public String DutyCycleCode { get; set; }
public IList<Object> logEventsIdList { get; set; }
} // end of public class ELLCsLog
这是LogEvent模型类(多面)
public class ELLCsLogEvent : ELLCsInterfaceLogEvent
{
public Object Id { get; set; }
public Object UmbrellaLogId { get; set; }
public Double StartTime { get; set; }
public Double EndTime { get; set; }
public Double Duration { get; set; }
public int isSubmitted { get; set; }
public int isFrozen { get; set; }
public String Remarks { get; set; }
public String Location { get; set; }
public String StatusCode { get; set; }
}
在我的代码中,我在将对象插入MongoDB数据库之前创建了我的对象的BsonDocument版本。
1-)给定一个代表父LogId的UmbrellaLogId,下面的代码将一个LogEvent实例插入到MongoDB数据库中。
2-)下一步涉及检索我刚刚插入的同一个LogEvent实例,这样我就可以得到MongoDB生成的LogEvent的Id。 (我知道它效率低下,但我现在正试图让代码工作)
3-)我还检索父日志(即使用UmbrellaLogId的日志),以便我可以将LogEvent的Id添加到IList logEventsIdList集合。
4-)?这里是我真正迷失的地方,我不知道如何将LogEvent的Id添加到IList logEventsIdList中?我必须使用BsonDocument吗?我们该怎么做呢?
MongoDB.Bson.ObjectId UmbrellaLogIdAsObjectId = (ObjectId)UmbrellaLogId;
BsonDocument logEventBsonDoc = new BsonDocument {
{"UmbrellaLogId", (BsonValue)UmbrellaLogIdAsObjectId}
, {"StartTime", StartTime}
, {"EndTime", EndTime}
, {"Duration", Duration}
, { "isSubmitted", isSubmitted}
, { "isFrozen", isFrozen}
, { "Remarks", Remarks }
, { "Location", Location}
, { "StatusCode", StatusCode }
}; // end of new BsonDocument
objUtility = new Utility();
objUtility.Insert(logEventBsonDoc, "FMS_TM_MST_LogEvents");
string[] arrFields = {"Id",
"UmbrellaLogId",
"StartTime",
"EndTime",
"Duration",
"isSubmitted",
"isFrozen",
"Remarks",
"Location",
"StatusCode" };
IMongoQuery query = Query.EQ("UmbrellaLogId", (BsonValue)UmbrellaLogIdAsObjectId);
aLogEvent = DBConnection.database.GetCollection<ELLCsLogEvent>("FMS_TM_MST_LogEvents")
.Find(query).SetFields(arrFields).ToList<ELLCsInterfaceLogEvent>().FirstOrDefault();
IMongoQuery queryForLogOfInterest = Query.EQ("Id", (BsonValue)UmbrellaLogIdAsObjectId);
ELLCsInterfaceLog aLog = DBConnection.database.GetCollection<ELLCsLog>("FMS_TM_MST_Logs")
.Find(queryForLogOfInterest).SetFields(arrFields).ToList<ELLCsInterfaceLog>().FirstOrDefault();
?这是我真正迷失的地方,我不知道如何将LogEvent的Id添加到IList logEventsIdList?我必须使用BsonDocument吗?我们该怎么做呢?
答案 0 :(得分:0)
所有
以下是使单方实体了解多方实体的代码:
DBConnection.database.GetCollection<Log>("Logs").Update(
Query<Log>.EQ(l => l.Id, UmbrellaLogIdAsObjectId),
Update<Log>.Push(l => l.logEventsIdList, aLogEvent.Id),
new MongoUpdateOptions
{
WriteConcern = WriteConcern.Acknowledged
});