Entity Framework での char(N) 列の値のトリミングの自動化
テキスト値が char として格納されるサードパーティ データベースを含むシナリオの場合(N) の場合、これらのフィールドにマップされた特定の列の取得値の自動トリミングが必要になります。 LINQ to Entities クエリで Trim を使用して手動でトリミングすることは可能ですが、非実用的であり、エラーが発生しやすいことがわかります。この記事では、自動トリミング用に Entity Framework (EF) を構成し、使いやすさと保守性を向上させるソリューションについて説明します。
インターセプト ソリューション
Rowan Miller 氏、プログラム マネージャーMicrosoft の EF は、EF 6.1 以降のインターセプターを利用した効果的なソリューションを提案しました。このアプローチは、DB コマンド ツリーを変更する StringTrimmerInterceptor の作成を中心としています。インターセプターは SSpace クエリをインターセプトし、StringTrimmerQueryVisitor を使用して変換します。訪問者は特定の型 (nvarchar、varchar など) の列を検出し、EdmFunctions.Trim を使用してその値を自動的にトリミングします。
コードベースの構成
使用を有効にするにはこのインターセプターのコードベースの構成クラス MyConfiguration が作成されます。このクラスは DbConfiguration を継承し、StringTrimmerInterceptor を追加します。 EF は、構成クラスがデータ コンテキストと同じアセンブリまたはプロジェクトに含まれている場合、その構成クラスを自動的に検出します。
実装例
次のコード スニペットは、これらの使用法を示しています。自動値トリミング用に EF を構成するクラス:
using System.Data.Entity; using FixedLengthDemo; namespace MyProject { public class MyContext : DbContext { public MyContext() : base("MyConnectionString") { Configuration.LazyLoadingEnabled = false; Configuration.ProxyCreationEnabled = false; } } } public class MyConfiguration : DbConfiguration { public MyConfiguration() { AddInterceptor(new StringTrimmerInterceptor()); } }
この例では、MyContext は遅延読み込みで構成されていますプロキシの作成は無効になっています。プロジェクトに MyConfiguration クラスを含めることで、EF は StringTrimmerInterceptor を初期化し、特定の char(N) 列から取得された値が自動的にトリミングされるようにし、効率とデータの整合性の両方を強化します。
以上がEntity Framework で char(N) 列の値のトリミングを自動化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。