Linq to SQL: How do I stop the auto generated obje

2020-01-29 07:33发布

问题:

In visual studio 2008, when I drag a database table into my dbml screen, any tables that end with the letter s automatcially get the s removed from the dbml object. Is there any way to disable this?

Also, the collection of rows also gets an s appended to the collection property name. Is there a way to change that as well?

Thanks

回答1:

You need to disable the Pluralize Table Names for the LINQ to SQL designer.

To do this navigate to Tools -> Options -> Database Tools -> O/R Designer and change the Pluralization of names to false.

Then you will need to recompile your project and it should address the naming



回答2:

In a code first scenario, you can handle some problems that pop up like this on a more granular level by simply specifying the name of the table on the entity with the Table attribute:

    [Table("QTPhotos")]
    public class QTPhoto 

What I found was, originally, we had a simple entity name "Photo," but this was conflicting with some things (with a number of our entity names), so we started qualifying them ("QT" as a sample prepend), and suddenly this problem popped up. So I bet this is because "Photo" is a recognized word ending in 'o' that does not pluralize to "..oes" (as in Potatoes), but "QTPhoto" was not, meaning it was trying to find a table named "QTPhotoes".

Simply setting the table name fixes this.