我正在使用我自己的CQRS模式实现将旧项目迁移到CQRS.我开始迁移的主要原因是为了摆脱n层架构造成的混乱.然而,正如许多其他人一样,该项目正在使用关系数据存储.
此过程中的当前状态是我有进行更改的命令和隔离查询的Query对象.这意味着从客户端到服务器,我有一种更改和查询数据的CQRS方式,尽管我不会从更改中发布任何事件,也没有非规范化读取存储.我应该提一下,我也有非常贫血的DTO作为我的"领域模型".所有行为都通过其处理程序,管理器和所有可怕的层事物分布在整个n层层中.
我想知道如何迈出下一步.我现在想要的是开始构建一个负责其行为的域模型,其原因是我想开始使用事件存储作为真相的来源,这让我想到了我的问题:
如何将数据从关系数据存储迁移到事件存储中?
我有一个极其规范化的数据模型,其中包含非常重要的数据,必须进行迁移.我确实理解我不能期望从数据中捕获任何意图,因为它已经死了,但我应该怎么做呢?我应该创建大量的迁移命令吗?听听你的经历会很高兴.
在我的域中发布事件后,我不断收到来自我的denormalizer主机的以下消息:
2011-07-22 14:18:32,374 [Worker.5] WARN NServiceBus.Unicast.UnicastBus [(null)]
<(null)> - Received an empty message - ignoring.
Run Code Online (Sandbox Code Playgroud)
我只是使用jolivers eventstore执行此操作:
return Wireup.Init()
.UsingRavenPersistence("EventStore", new DocumentObjectSerializer())
.UsingAsynchronousDispatcher()
.PublishTo(new DelegateMessagePublisher(c => container.Resolve<IPublishMessages>().Publish(c)))
.Build();
Run Code Online (Sandbox Code Playgroud)
IPublishMessages解析为:
public sealed class NServiceBusPublisher : IPublishMessages
{
private const string AggregateIdKey = "AggregateId";
private const string CommitVersionKey = "CommitVersion";
private const string EventVersionKey = "EventVersion";
private const string BusPrefixKey = "Bus.";
private readonly IBus bus;
public NServiceBusPublisher(IBus bus)
{
this.bus = bus;
}
public void Dispose()
{
GC.SuppressFinalize(this);
}
public void …Run Code Online (Sandbox Code Playgroud) 试图将JOliver的EventStore与RavenDB连接起来并遇到麻烦.我在Raven中创建了一个名为RavenEventStore的新数据库.
以下是我的连线;
return Wireup.Init()
.UsingRavenPersistence("RavenEventStore")
.UsingAsynchronousDispatchScheduler()
.DispatchTo(new DelegateMessageDispatcher(DispatchCommit))
.Build();
Run Code Online (Sandbox Code Playgroud)
当调用Wireup.Init()时,RavenDb端会发生此异常;
Url:"/ indexes/RavenCommitByDate"Newtonsoft.Json.JsonReaderException:解析值时遇到意外的字符:.第1行,位于1.:Development\Releases\Json\Working\Src\Newtonsoft.Json\JsonTextReader.cs中的Newtonsoft.Json.JsonTextReader.ParseValue(Char currentChar):位于Newtonsoft.Json.JsonTextReader.ReadInternal的第699行()位于d:\ Development\Releases\Json\Working\Src\Newtonsoft.Json\JsonTextReader.cs:第4行,位于d:\中的Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadForType(JsonReader reader,Type t,JsonConverter propertyConverter)开发\发布\ Json\Working\Src\Newtonsoft.Json\Serialization\JsonSerializerInternalReader.cs:第10行,位于d:\ Development\Releases\Json中的Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader,Type objectType)\Src\Newtonsoft.Json\Serialization\JsonSerializerInternalReader.cs:位于c:\ Builds\raven\Raven.Database\Extensions\HttpExtensions.cs中Raven.Database.Extensions.HttpExtensions.ReadJsonObject [T](IHttpContext context)的第118行:第57行在Raven.Database.Server.Responders.Index.Put(IHttpContext conte xt,String index)在c:\ Builds\raven\Raven.Database\Server\Responders\Index.cs:第64行,位于c:\ Builds\raven中的Raven.Database.Server.Responders.Index.Respond(IHttpContext context)\Raven.Database\Server\Responders\Index.cs:位于c:\ Builds\raven\Raven.Database\Server\HttpServer.cs:第477行的Raven.Database.Server.HttpServer.DispatchRequest(IHttpContext ctx)第49行c:\ Builds\raven\Raven.Database\Server\HttpServer.cs中的Raven.Database.Server.HttpServer.HandleActualRequest(IHttpContext ctx):第259行
我也可以在RavenDB日志中看到异常;
Newtonsoft.Json.JsonReaderException: Unexpected character encountered while parsing value: . Line 1, position 1. at Newtonsoft.Json.JsonTextReader.ParseValue(Char currentChar) in d:\Development\Releases\Json\Working\Src\Newtonsoft.Json\JsonTextReader.cs:line 699 at Newtonsoft.Json.JsonTextReader.ReadInternal() in d:\Development\Releases\Json\Working\Src\Newtonsoft.Json\JsonTextReader.cs:line 499 at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadForType(JsonReader reader, Type t, JsonConverter propertyConverter) in d:\Development\Releases\Json\Working\Src\Newtonsoft.Json\Serialization\JsonSerializerInternalReader.cs:line 1072 at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType) in …Run Code Online (Sandbox Code Playgroud) 我在Jonathon Oliver的EventStore中看到以下错误:
错误:23505:重复键值违反唯一约束"ix_commits_revisions"
任何想法为什么会这样?