簡體   English   中英

MSOrleans 2.0 Ado.net 持久化

[英]MSOrleans 2.0 Ado.net Persistent

我正在 MsOrleans 上做 POC 並試圖在 ado.net 中保存糧食。 但是在啟動 Silo 時出現以下錯誤。

: Orleans.Runtime.SiloLifecycleSubject[100450]
      Lifecycle observer Orleans.Storage.AdoNetGrainStorage-OrleansStorage failed to start due to errors at stage 10000.
System.InvalidOperationException: Sequence contains no matching element
   at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source, Func`2 predicate)
   at Orleans.Storage.AdoNetGrainStorage.Init(CancellationToken cancellationToken) in D:\build\agent\_work\23\s\src\AdoNet\Orleans.Persistence.AdoNet\Storage\Provider\AdoNetGrainStorage.cs:line 409
   at Orleans.Runtime.SiloLifecycleSubject.MonitoredObserver.OnStart(CancellationToken ct) in D:\build\agent\_work\23\s\src\Orleans.Runtime\Lifecycle\SiloLifecycleSubject.cs:line 75
fail: Orleans.Runtime.SiloLifecycleSubject[100450]
      Lifecycle start canceled due to errors at stage 10000
System.InvalidOperationException: Sequence contains no matching element
   at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source, Func`2 predicate)
   at Orleans.Storage.AdoNetGrainStorage.Init(CancellationToken cancellationToken) in D:\build\agent\_work\23\s\src\AdoNet\Orleans.Persistence.AdoNet\Storage\Provider\AdoNetGrainStorage.cs:line 409
   at Orleans.Runtime.SiloLifecycleSubject.MonitoredObserver.OnStart(CancellationToken ct) in D:\build\agent\_work\23\s\src\Orleans.Runtime\Lifecycle\SiloLifecycleSubject.cs:line 75
   at Orleans.LifecycleSubject.WrapExecution(CancellationToken ct, Func`2 action) in D:\build\agent\_work\23\s\src\Orleans.Core\Lifecycle\LifecycleSubject.cs:line 115
   at Orleans.LifecycleSubject.OnStart(CancellationToken ct) in D:\build\agent\_work\23\s\src\Orleans.Core\Lifecycle\LifecycleSubject.cs:line 55
fail: Orleans.Runtime.Silo[100439]
      Exception during Silo.Start
Orleans.Runtime.OrleansLifecycleCanceledException: Lifecycle start canceled due to errors at stage 10000 ---> System.InvalidOperationException: Sequence contains no matching element
   at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source, Func`2 predicate)
   at Orleans.Storage.AdoNetGrainStorage.Init(CancellationToken cancellationToken) in D:\build\agent\_work\23\s\src\AdoNet\Orleans.Persistence.AdoNet\Storage\Provider\AdoNetGrainStorage.cs:line 409
   at Orleans.Runtime.SiloLifecycleSubject.MonitoredObserver.OnStart(CancellationToken ct) in D:\build\agent\_work\23\s\src\Orleans.Runtime\Lifecycle\SiloLifecycleSubject.cs:line 75
   at Orleans.LifecycleSubject.WrapExecution(CancellationToken ct, Func`2 action) in D:\build\agent\_work\23\s\src\Orleans.Core\Lifecycle\LifecycleSubject.cs:line 115
   at Orleans.LifecycleSubject.OnStart(CancellationToken ct) in D:\build\agent\_work\23\s\src\Orleans.Core\Lifecycle\LifecycleSubject.cs:line 55
   --- End of inner exception stack trace ---
   at Orleans.LifecycleSubject.OnStart(CancellationToken ct) in D:\build\agent\_work\23\s\src\Orleans.Core\Lifecycle\LifecycleSubject.cs:line 63
   at Orleans.Runtime.Scheduler.AsyncClosureWorkItem.Execute() in D:\build\agent\_work\23\s\src\Orleans.Runtime\Scheduler\ClosureWorkItem.cs:line 63
   at Orleans.Runtime.Silo.StartAsync(CancellationToken cancellationToken) in D:\build\agent\_work\23\s\src\Orleans.Runtime\Silo\Silo.cs:line 264
Orleans.Runtime.OrleansLifecycleCanceledException: Lifecycle start canceled due to errors at stage 10000 ---> System.InvalidOperationException: Sequence contains no matching element
   at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source, Func`2 predicate)
   at Orleans.Storage.AdoNetGrainStorage.Init(CancellationToken cancellationToken) in D:\build\agent\_work\23\s\src\AdoNet\Orleans.Persistence.AdoNet\Storage\Provider\AdoNetGrainStorage.cs:line 409
   at Orleans.Runtime.SiloLifecycleSubject.MonitoredObserver.OnStart(CancellationToken ct) in D:\build\agent\_work\23\s\src\Orleans.Runtime\Lifecycle\SiloLifecycleSubject.cs:line 75
   at Orleans.LifecycleSubject.WrapExecution(CancellationToken ct, Func`2 action) in D:\build\agent\_work\23\s\src\Orleans.Core\Lifecycle\LifecycleSubject.cs:line 115
   at Orleans.LifecycleSubject.OnStart(CancellationToken ct) in D:\build\agent\_work\23\s\src\Orleans.Core\Lifecycle\LifecycleSubject.cs:line 55
   --- End of inner exception stack trace ---
   at Orleans.LifecycleSubject.OnStart(CancellationToken ct) in D:\build\agent\_work\23\s\src\Orleans.Core\Lifecycle\LifecycleSubject.cs:line 63
   at Orleans.Runtime.Scheduler.AsyncClosureWorkItem.Execute() in D:\build\agent\_work\23\s\src\Orleans.Runtime\Scheduler\ClosureWorkItem.cs:line 63
   at Orleans.Runtime.Silo.StartAsync(CancellationToken cancellationToken) in D:\build\agent\_work\23\s\src\Orleans.Runtime\Silo\Silo.cs:line 264

當我在沒有持久性的情況下啟動它時,筒倉工作正常。

代碼示例:

筒倉adonet配置:

        builder
         .AddAdoNetGrainStorage("OrleansStorage", options =>
          {
              options.Invariant = "System.Data.SqlClient";
              options.ConnectionString = orleansConfig.ConnectionString;          
          });

谷物類:

    [StorageProvider(ProviderName = "OrleansStorage")]
    class CatalogGrain : Orleans.Grain<CatalogState>, ICatalogGrain
    {

 public async Task AddProductGrainToCatalog(IProductGrain productGrain)
        {

            State.Products.Add(productGrain);
            await base.WriteStateAsync(); 
        }
 }



public class CatalogState
    {
        public CatalogState()
        {
            Products = new List<IProductGrain>();
        }

        public string CatalogId { get; set; }

        public List<IProductGrain> Products { get; set; }
    }

對於錯誤,我可以看到您已運行腳本來創建表,但您錯過了向其中添加數據的腳本。 https://github.com/dotnet/orleans/blob/master/src/AdoNet/Orleans.Persistence.AdoNet/SQLServer-Persistence.sql文檔確實提到這是開發人員的常見錯誤。 通過逐步添加如何操作而不是如此通用,文檔可能會更好。

無論如何,運行腳本並讓我知道。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM