生成的C#LINQ to SQL类

时间:2016-04-23 03:21:50

标签: c# visual-studio linq-to-sql

将表从服务器资源管理器拖到DataClasses.dbml后,Visual Studio将在DataClasses.designer.cs中生成代码。

如果表的名称以's'结尾,例如Books,则VS将删除类名中的's'并保留带有属性名称的's':

public System.Data.Linq.Table<Book> Books
{
    get
    {
        return this.GetTable<Book>();
    }
}

如果表格没有以's'结尾,例如Book,VS将保留类名并在属性名称中添加's':

public System.Data.Linq.Table<Book> Books
{
    get
    {
        return this.GetTable<Book>();
    }
}

然而,我同事的VS只保留了名字:

Book: public System.Data.Linq.Table<Book> Book
Books: public System.Data.Linq.Table<Books> Books

我们使用自己的电脑开展同一个项目。如果将一个新表拖到DataClasses.dbml并保存,我的VS将更改他的旧代码:

public System.Data.Linq.Table<Book> Book

public System.Data.Linq.Table<Book> Books

以及他所有的代码,例如

DataClassesDataContext db = new DataClassesDataContext();
var book = db.Book;

将是错误,因为现在必须是:

var book = db.Books;

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

默认情况下,将名称以s或者s结尾的数据库对象从Server Explorer / Database Explorer拖到Visual Studio中的LINQ to SQL工具上时,生成的实体类的名称将从复数更改为单数。这样做是为了更准确地表示实例化的实体类映射到单个数据记录的事实。例如,将Customers表添加到O / R设计器会生成名为Customer的实体类,因为该类将仅保存单个客户的数据。

如何:打开和关闭复数(O / R Designer):

https://msdn.microsoft.com/en-us/library/bb384507.aspx