可以修改Linq To SQL生成的C#吗?

时间:2008-11-26 00:54:12

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

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

它是某个地方的T4模板吗?还是有其他方法给猫皮肤?

4 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

不,SqlMetal工具处理C#的生成,它本身定义了如何生成C#(或VB)。

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

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

答案 2 :(得分:0)

不幸的是,对于部分类,您无法从部分类的其他部分向成员添加属性 - 即,如果SqlMetal定义了属性Foo,则无法在自己的Foo中添加属性.cs的一半。

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

答案 3 :(得分:0)

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

[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/