【问题标题】:Force automatic linq to sql classes to have pascal case properties?强制自动 linq to sql 类具有 pascal case 属性?
【发布时间】:2012-11-14 21:43:42
【问题描述】:

我的 SQL 数据库有驼峰式的列名。 我正在使用带有 C# 的 Linq to SQL。

有没有办法强制自动生成属性为帕斯卡大小写?

camel case 属性不符合 C# 标准,每次我需要重新创建类时都手动执行很痛苦。

【问题讨论】:

  • Huagati DBML Tools 提供类似的东西 - 命名约定和 Linq-to-SQL 模型刷新以及更多好东西。不是免费的 - 但如果您正在认真使用 Linq-to-SQL,那么物有所值!
  • 我猜你不可能重命名你的 SQL 列?这听起来是最简单的方法。
  • @SteveDanner 实际上最简单的方法是在 dbml 设计器中重命名生成的类

标签: c# linq-to-sql properties camelcasing pascalcasing


【解决方案1】:

如果您的数据库非常大并且手动重命名实体非常耗时,那么:

  • 下载LINQ to SQL templates for T4并将两个文件添加到您的项目CSharpDataClasses.ttL2ST4.ttinclude
  • 重命名`CSharpDataClasses.tt 以匹配您的dbml 文件名(例如Northwind.tt
  • 选择dmbl 文件(例如Northwind.dbml)并从Custom Tool 属性中删除MSLinqToSQLGenerator
  • 打开 L2ST4.ttinclude 并按照进一步描述进行更改
  • 选择Northwind.tt 文件并按Ctrl+S(这将运行LINQ 2 SQL 类生成)。

L2ST4.ttinclude 文件更改:

找到类Data的定义(在文件的顶部)并将这段代码粘贴到它之前:

class Lazy
{
   public static string FirstLetterToUpper(string str)
   {
       return Char.ToUpper(str[0]) + str.Substring(1);
   }
}

然后找到类Table的定义并在构造函数中将Member属性初始化替换为

Member = Lazy.FirstLetterToUpper((String)xe.Attribute("Member"));

找到类 Class 并在构造函数中将 Name 属性初始化替换为

Name = Lazy.FirstLetterToUpper((String) xe.Attribute("Name")); 

最后,在其构造函数集中找到类Association

typeName = Lazy.FirstLetterToUpper((String) xe.Attribute("Type"));

PS 如果你真的很懒,那就用我已经改过的this L2ST4.ttinclude file :)

【讨论】:

  • 我正在使用 Entity Framework 4.0 和 sql server。我有类似的问题..属性都是小写并包含下划线...同样,这些类也是实体框架生成的名称中的类,因为它可以在数据库中找到...有什么解决方案吗?
  • @Xavier 我不知道 T4 模板是否适用于 EF 4.0。但是您可以使用 T4 更改属性名称生成。
【解决方案2】:

我建议 T4 项目l2st4.codeplex.com 使用 LINQ to SQL 模板。您可以根据需要对其进行自定义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    • 2016-04-29
    • 2012-04-11
    相关资源
    最近更新 更多