問題タブ [sharp-architecture]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
fluent-nhibernate - EntityWithTypedId の鋭いアーキテクチャの問題
アイデンティティに Guid コームを使用したいと考えています。クラスに EntityWithTypedId インターフェイスを追加したため、テーブルが永続化されません。つまり、nh prof を使用すると、SaveOrUpdate メソッドが呼び出されていないことがわかります。Entity インターフェースを使用するだけなら、プロファイラーで見ることができます。
コントローラ
c# - Nhibernate で名前付きパラメーターに値を割り当てる際の問題
私はNhibernateに比較的慣れていません。ストアド プロシージャを更新しようとしています。名前付きクエリで以下のセクションを取得しました。
Testupdate は、単純な更新ステートメントを含むストアド プロシージャです。次のコード行を使用してパラメーターを更新しています。
ただし、 の値を見ると、query.QueryString
まだ同じ値 ( ) を指していますexec UpdateTest :DateField :StringField :IntField :BoolField :NullIntField
。名前付きパラメーターが割り当てられていないようです。この問題を回避するにはどうすればよいですか?
データのクエリに流暢な nhibernate を使用する SharpArchitecutre を使用しています。
この特定の問題についてフォーラムを検索しましたが、例を見つけることができませんでした。
問題は些細なことかもしれませんが、これまでのところ解決策を見つけることができませんでした。
どんな助けでも大歓迎です。
nhibernate - NHibernate の更新前に dB に対して検証を実行する方法
次のシナリオは、非常に一般的であり、それを解決する方法は 1 つ知っていますが、洗練されていません。
私が提供している例は、 https://github.com/sharparchitecture/Sharp-Architecture-Cookbookに基づいています。
私がコーディングしているアプリケーションは ASP.NET MVC アプリケーションであり、同じオブジェクトで作業する複数のユーザーをサポートする必要があります。
次のシナリオはエッジ ケースですが、有効なシナリオです。
同じオブジェクトで作業している 2 人のユーザーがいて、dB 行を更新できるかどうかは、特定のフィールドの値に依存するとします。より具体的にするために、製品があり、物事を単純にするために、この製品には「Name」フィールドと「QuantityInStock」フィールドがあるとします。
最初に、Product のアイテムが 10 個あり、User1 と User2 がこの製品を購入したいとします。両方のユーザーに最初のフォームが表示されると、これらのアイテムの在庫が 10 個あることが通知されます。ここで、User1 は 10 品目すべてを購入し、User2 はコーヒーを飲みに行きます。したがって、User1 のトランザクションは問題なく実行されます。
その後、User2 は、まだ 10 個のアイテムが在庫にあると考えて、コーヒーを飲んだ後に戻ってきました。そこで彼は 1 を買おうとしましたが、商品の在庫がないため、それを阻止しなければなりません。
したがって、この問題は ASP.NET DataAnnotations 検証を使用することで解決でき、これによりほとんどのケースがキャッチされます。ただし、このエッジ ケースでは、User1 と User2 は同じ操作を実行しますが、User2 がフォームを送信すると ASP.NET 検証に合格しますが、永続化レイヤーに到達するまでに数分の 1 秒以内に実行するとします。 QuantityInStock は 0 です。
これに対する解決策は、可能な限り最新の時点、つまり Update メソッドを呼び出す直前に検証を実行することです。
次に、いくつかのコードについて説明します。
今、私が呼んでいるという事実:
つまり、これを行うだけの場合:
例外が発生します:
同じ識別子値を持つ別のオブジェクトが、すでにセッションに関連付けられています: 1
したがって、すべての値を productModel から currentProductModel にコピーする必要があります。Automapper のようなものを使用する場合は問題ありませんが、あるオブジェクトから別のオブジェクトにデータを転送することなく、productModel をそのまま保存できるはずだと感じるという意味で、私にはまだ少し気分が悪いです。
さらに、1 回は DataAnnotation を使用し、もう 1 回は更新の直前に、同じ検証を 2 回行う必要があるため、DRY 原則に違反します。
要点は、トリックを見逃しているように感じますが、どこから始めて何を調査すればよいかよくわかりません。
私にとってこれは単純な問題ですが、素敵でエレガントな解決策を考え出すことは別のことです。問題は、過去にこの単純なケースにどのように対処したかです。私はこれを考えすぎていますか?
nhibernate - シャープ アーキテクチャ + NHibernate Envers
現在、シャープ アーキテクチャ 1.9.6 を使用しています。そして、ドメイン クラスを監査する必要があります。このタスクには NHibernate Envers を使用するのが快適なようです。しかし、このライブラリを使用するようにシャープ アーキテクチャを構成できませんでした。いくつかのエラーがありましたが、1 つを除いてほとんどすべて解決しました。
エラーは次のとおりです。
たとえば、DB に "Document" という名前の POCO クラスと "Documents" テーブルがあります。また、テーブル「Documents_AUD」を作成し、属性 [Audited] をクラス「Document」に追加しました。そのため、Document クラスのオブジェクトが変更された場合、Envers は「Documents_AUD」テーブルにデータを追加する必要があります。これを行うには、Envers は別のクラス「Document_AUD」のオブジェクトを (動的に?) 作成します。そしてここにエラーが表示されます:「NHibernate.MappingException No Persister for Document_AUD」。
また、Document_AUD のマッピングをどこに追加すればよいかわかりません。
Envers を Sharp Arch で使用している人はいますか? 誰かが Envers + Sharp Arch の構成を共有できますか?
どうもありがとうございました!
nhibernate - 流暢な Nhibernate 未知のパス
VS2010 でシャープなアーキテクチャを使用するプロジェクトがあり、「/」アプリケーションでサーバー エラーが発生します。
タイムアウトになりました。操作が完了する前にタイムアウト期間が経過したか、サーバーが応答していません。説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。
例外の詳細: System.Data.SqlClient.SqlException: タイムアウトが発生しました。操作が完了する前にタイムアウト期間が経過したか、サーバーが応答していません。
奇妙なことは、スタック トレースにあります。これは、サーバーにないパス「e:\WorkSpaces\Git\SharpArchitecture...」を参照しています。
asp.net-mvc - Sharp Architecture 2.0 でのスキャフォールディングのサポート
SA 2.0 での足場のサポートを中止しました。templify-projectをダウンロードしました。templify をインストールしてソリューションを作成しましたが、作成されたプロジェクト構造には含まれておらず、コード生成テンプレートが含まれているはずですtools
。
質問は、SA 2.0 でコード生成機能を削除したかどうかです。さらに、誰かが SA 2.0 のデモを教えてくれたら、本当に感謝します。tools/CrudScaffolding
asp.net-mvc-3 - FluentHibernateを使用してT4テンプレートからLINQ2SQLクラスを生成する方法
私は以前に答えられなかった同様の質問 をしました、私はT4テンプレートを使用してLINQ2SQLクラスを生成する方法を理解しようとしています。私はシャープなアーキテクチャを使用しています(または使用しようとしています)。出発点が見つかりませんでした。
私が行ったこと:T4テンプレートを使用したコード生成について説明している多くのチュートリアルブログを読みましたが、EntityFrameworkで行われているようにデータベースからエンティティクラスまたはlinq2sqlクラスを生成する方法を見つけることができませんでした。マッピングを手書きする必要がありますか?データベースを使用してクラスが生成されますか、質問があいまいであるか、適切に表現されていない場合はどうなりますか?申し訳ありませんが、現時点でT4とFluentHibernateについてはこれですべてです。
私はどんなガイダンス/助けにも感謝します...
castle-windsor - Quartz.netセットアップスローエラー:"構成パーサーが検出されました「」
シャープアーキテクチャを実装するAsp.netC#MVC3アプリケーションがあります。私はQuartz.netをセットアップして、Castle Windsorとうまく連携させようと数日間、運が悪かったのです。私が知っていることに基づいて、私はすべてを正しくセットアップしましたが、問題が続いています。
Global.csファイルで、コンテナーを作成し、クォーツジョブを登録しようとしています。
私のquartz_jobs.xmlファイルには、次の内容が含まれています。
nhibernate - nhibernateセッションを使用してフェッチされた結果の列挙エラーcreatesqlquery
シャープアーチver1.0を使用しています。
NHibernate PostUpdateEventで、データベースにアクセスしようとしています。
エンティティを保存しようとして、postupdateeventでこの選択クエリを実行すると、OnFlushで列挙エラーが発生します。NHibernate \ Listeners \ FlushFixEventListener .cs行:35
foreachループを使用すると列挙操作が実行されるため、forループを実行する方が適切であると読みました。しかし、私はforループで試しました。それでも違いはありません。
保存操作は、SharArchNHibernateTransaction属性で処理されます。Transaction属性を削除すると、postupdatelistenerのクエリは正常に機能します。
これがスタックトレースです。
[InvalidOperationException:コレクションが変更されました。列挙操作が実行されない場合があります。]System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)+56 System.Collections.Generic.Enumerator.MoveNextRare()+58 System.Collections.Generic.Enumerator.MoveNext()+93NHibernate.Engine.ActionQueue。 d:\ horn.horn \ orm \ nhibernate \ Working-2.1 \ src \ NHibernate \ Engine \ ActionQueue.cs:112のExecuteActions(IListリスト)d:\ horn.horn \ ormのNHibernate.Engine.ActionQueue.ExecuteActions() \ nhibernate \ Working-2.1 \ src \ NHibernate \ Engine \ ActionQueue.cs:147 NHibernate.Event.Default.AbstractFlushingEventListener.PerformExecutions(IEventSource session)in d:\ horn.horn \ orm \ nhibernate \ Working-2.1 \ src \ NHibernate \ Event \ Default \ AbstractFlushingEventListener.cs:241NHibernate.Event.Default.DefaultFlushEventListener。1.Save(T entity) in D:\Solutions\Infrastructure\NHibernate\LinqRepository.cs:95
Tasks.Shared.ContentEntityTasks
4.D:\ Solutions \のD:\ Solutions \ Tasks \ Shared \ ContentEntityTasks.cs:96 Web.Controllers.Entity.EntityController.Edit(EntityViewModel entityViewModel、HttpPostedFileBase fileName、HttpPostedFileBase mainImageFileName、HttpPostedFileBasethumbnailFileName)に(TSaveEntityRequestDetailsdetails)を保存します。 Web.Controllers \ Entity \ EntityController.cs:379 lambda_method(ExecutionScope、ControllerBase、Object [])+185 System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext、IDictionary 2 parameters) +236
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary
2 parameters)+31System.Web.Mvc。<> c_ DisplayClassa.b _7()+85 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter、ActionExecutingContext preContext、Func1 continuation) +235491
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func
1継続)+235491 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter、ActionExecutingContext preContext、Func 1 continuation) +235491
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func
1 continuation)+235491 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext、IList 1 filters, ActionDescriptor actionDescriptor, IDictionary
2 parameters)+288System.Web。 Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext、String actionName)+235670 System.Web.Mvc.Controller.ExecuteCore()+174 System.Web.Mvc.MvcHandler.ProcessRequest(HttpContextBase httpContext)+209System.Web.CallHandlerExecutionStep.System。 Web.HttpApplication.IExecutionStep.Execute()+599 System.Web.HttpApplication.ExecuteStep(IExecutionStep step、Boolean&completedSynchronously)+171