3

在 .net 3.5 中,如果我生成一个 linq to sql 数据上下文,它可以使名称复数化一些奇妙的魔法。在我的代码中,我需要复数一些术语。我可以使用 Linq 使用的任何方法来生成我的复数吗?

4

4 回答 4

2

您必须使用反射器来深入了解为 linq-to-sql 设计器执行代码生成的 Visual Studio 程序集。

于 2010-08-17T17:14:52.437 回答
2

LINQ to SQL 不公开其复数逻辑。对 Reflector 的快速检查表明,它并没有使用非常复杂的算法:

如果它以“x”、“ch”、“sh”或“ss”结尾,则添加“es”。
如果它以辅音前面的“y”结尾,请删除 y 并添加“ies”。
否则,添加's'。

如果 .NET 4 是一个选项,那么 EF 的 PluralizationService 会更加彻底。以防万一您需要复数“pneumonoultramicroscopicsilicovolcanoconiosis”。

于 2010-08-17T17:57:33.380 回答
2

还有一个 Inflector 的 .NET 端口可以完成同样的工作。作者的博客现已关闭,但可在http://cid-net.googlecode.com/svn/trunk/src/Cid.Mvc/Inflector.cs等处获得。

(通过Inflector.Net 的替代品

于 2010-08-17T18:01:55.137 回答
0

LINQ to SQL 使用一个相当简单的系统进行复数。如果您要使用复杂的术语,我建议您使用SEDE 中的 Inflector 之类的东西。那段代码似乎来自SubSonic 项目

于 2010-08-17T18:02:58.967 回答