我正在使用 C#、Dotnet core 和NeventStore(版本 9.0.1),尝试评估它支持的开箱即用的各种持久性选项。
更具体地说,当尝试使用 mongo 持久性时,有效负载将在不应用任何压缩的情况下进行存储。
注意:当使用 NEventStore 的 SQL 持久性时,有效负载压缩完美发生,而不是使用 mongo 持久性。
我使用以下代码来创建事件存储并初始化:
private IStoreEvents CreateEventStore(string connectionString)
{
var store = Wireup.Init()
.UsingMongoPersistence(connectionString,
new NEventStore.Serialization.DocumentObjectSerializer())
.InitializeStorageEngine()
.UsingBsonSerialization()
.Compress()
.HookIntoPipelineUsing()
.Build();
return store;
}
Run Code Online (Sandbox Code Playgroud)
而且,我使用以下代码来存储事件:
public async Task AddMessageTostore(Command command)
{
using (var stream = _eventStore.CreateStream(command.Id))
{
stream.Add(new EventMessage { Body = command });
stream.CommitChanges(Guid.NewGuid());
}
}
Run Code Online (Sandbox Code Playgroud)
解决方法是: 在 IPipelineHook 中实现 PreCommit(CommitAttempt 尝试)和 Select 方法,并通过使用 gzip 压缩逻辑在 MongoDB 中实现事件压缩。
所以,问题是: …
我有一个控制器,我的 PUT 方法使用 multipart/form-data 作为内容类型,因此我在控制器内获取 JSON 和映射的类。
有没有一种方法可以根据我在控制器内部的模型类中编写的注释来验证该模型?
public class AbcController : ApiController
{
public HttpResponseMessage Put()
{
var fileForm = HttpContext.Current.Request.Form;
var fileKey = HttpContext.Current.Request.Form.Keys[0];
MyModel model = new MyModel();
string[] jsonformat = fileForm.GetValues(fileKey);
model = JsonConvert.DeserializeObject<MyModel>(jsonformat[0]);
}
}
Run Code Online (Sandbox Code Playgroud)
我需要验证控制器内的“模型”。仅供参考,我已向 MyModel() 添加了所需的注释。