在.net 3.5中,如果我生成一个linq到sql数据上下文,它会使多个名称复杂化。在我的代码中,我需要复数一些术语。我可以使用Linq用来生成复数形式的任何方法吗?
答案 0 :(得分:2)
您必须使用反射器深入挖掘为linq-to-sql设计器执行代码生成的visual studio程序集。
答案 1 :(得分:2)
LINQ to SQL不公开其复数逻辑。使用Reflector快速检查后发现它并没有使用非常复杂的算法:
如果以“x”,“ch”,“sh”或“ss”结尾,则添加“es”。
如果它以辅音前面的'y'结尾,则删除y并添加'ies' 否则,添加's'。
如果.NET 4是一个选项,那么EF的PluralizationService就更彻底了。以防你需要复活'pneumonoultramicroscopicsilicovolcanoconiosis'。
答案 2 :(得分:2)
还有一个Inflector的.NET端口可以完成同样的工作。作者的博客现在已经关闭,但可以在http://cid-net.googlecode.com/svn/trunk/src/Cid.Mvc/Inflector.cs等网站上找到。
答案 3 :(得分:0)
LINQ to SQL使用一个相当简单的系统进行复数化。如果您打算使用复杂的术语,我建议您使用the Inflector that is part of SEDE 之类的内容。这段代码似乎来自SubSonic project。