0

我正在尝试按如下方式进行标准双向复制。但是,我得到一个 NullReferenceException。这是一个单独的复制项目。我确实在这个复制项目中导入了原始项目中涉及的类(如Item、Category等)。我究竟做错了什么?(如果我使用 VS 进行调试,我可以看到 changedObjects 确实具有所有更改的对象;Replicate 函数内部似乎存在一些问题)

IObjectContainer local = Db4oFactory.OpenFile(@"G:\Work\School\MIS\VINMIS\Inventory\bin\Debug\vin.db4o");
IObjectContainer far = Db4oFactory.OpenFile(@"\\crs-lap\c$\vinmis\vin.db4o"); ;

IReplicationSession replication = Replication.Begin(local, far);
IObjectSet changedObjects = replication.ProviderA().ObjectsChangedSinceLastReplication();

while(changedObjects.HasNext())
               replication.Replicate(changedObjects.Next()); // Exception!!!
replication.Commit();

changedObjects = replication.ProviderB().ObjectsChangedSinceLastReplication();
while (changedObjects.HasNext())
                replication.Replicate(changedObjects.Next());
replication.Commit();

问候,

索拉布。

4

1 回答 1

0

听起来您忘记使用 UUID 和版本号设置数据库。从官方文档

public static IConfiguration ConfigureReplication()
{
    IConfiguration db4oConfig = Db4oFactory.NewConfiguration();
    db4oConfig.GenerateUUIDs(ConfigScope.Globally);
    db4oConfig.GenerateVersionNumbers(ConfigScope.Globally);
    return db4oConfig;
}
于 2010-03-27T18:01:40.400 回答