【问题标题】:Possible to modify the C# that Linq To SQL generates?可以修改 Linq To SQL 生成的 C# 吗?
【发布时间】:2008-11-26 00:54:11
【问题描述】:

如果能够以某种方式说生成的实体类中的某些属性应该由(比如说)验证属性(以及 Linq To SQL 列属性)修饰,那将非常方便。

它是某个地方的 T4 模板吗?或者还有其他方法可以给猫剥皮吗?

【问题讨论】:

    标签: c# linq-to-sql templates code-generation


    【解决方案1】:
    【解决方案2】:

    不,SqlMetal 工具负责处理 C# 的生成,它在其内部定义了 C# 的生成方式(或 VB 的生成方式)。

    我不熟悉您想要的模板样式,但您可以尝试扩展生成的类(如果它们没有那么大的变化),因为它们只是部分类。

    否则您将需要编写/查找 SqlMetal 的自定义实现

    【讨论】:

      【解决方案3】:

      不幸的是,对于分部类,您不能从分部类的另一部分向成员添加属性 - 即,如果 SqlMetal 定义属性Foo,则不能在您自己的一半@ 中向Foo 添加属性987654323@.

      这消除了自定义此类文件的(通常)更强大的方法之一......您可能不得不抓住机会手动编辑生成的文件(在将其与 dbml 完全分离之后) - 或编写您自己的 dbml 解析器 frmo 从头开始​​(可能使用 xslt)。不容易。

      【讨论】:

        【解决方案4】:

        动态数据中的解决方法是使用可以修饰的元数据类:

        [MetadataType(typeof(Product_Meta))]
         public partial class Product
         {        
           public partial class Product_Meta 
           {
             [Range(5, 50, ErrorMessage = "The product's reorder level must be greater than 5 and less than 50")]
             public object ReorderLevel { get; set; }         
           }  
         }
        

        http://rachelappel.com/asp-net-dynamic-data/custom-validation-in-asp-net-dynamic-data-using-attributes/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-24
          • 2011-05-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多