.net 3.5では、linq to sqlデータコンテキストを生成すると、名前を複数形にするためのすばらしい魔法が実行されます。私のコードでは、いくつかの用語を複数形にする必要があります。Linqが複数形を生成するために使用している方法を使用できますか?
4 に答える
リフレクターを使用して、linq-to-sqlデザイナーのコード生成を行うVisualStudioアセンブリを掘り下げる必要があります。
LINQ to SQLは、その複数化ロジックを公開しません。Reflectorを簡単にチェックすると、非常に複雑なアルゴリズムを使用していないことがわかります。
'x'、'ch'、'sh'、または'ss'で終わる場合は、'es'を追加します。
子音が前に付いた「y」で終わる場合は、yを削除して「ies」を追加します。
それ以外の場合は、「s」を追加します。
.NET 4がオプションの場合、EFのPluralizationServiceははるかに徹底的です。万が一、「ニューモノウルトラマイクロスコピックシリコボルカノコニオーシス」を複数形にする必要がある場合に備えて。
同じ仕事をするInflectorの.NETポートもあります。著者のブログは現在ダウンしていますが、http: //cid-net.googlecode.com/svn/trunk/src/Cid.Mvc/Inflector.csなどで入手できます。
(Inflector.Netの代替手段を介して)
LINQ to SQLは、複数化のためにかなり単純なシステムを使用します。複雑な用語を扱う場合は、SEDEの一部であるInflectorのようなものを使用することをお勧めします。そのコードはSubSonicプロジェクトに由来しているようです。