2008-11-26 3 views
2

Было бы очень полезно иметь возможность как-то сказать, что определенные свойства в сгенерированных классах сущностей должны, например, быть украшены (скажем) атрибутами проверки (а также атрибутами столбца Linq To SQL).Возможно изменение C#, создаваемого Linq To SQL?

Это шаблон Т4 где-нибудь? Или есть другие способы кожи кошки?

ответ

0

Нет, инструмент SqlMetal - это то, что обрабатывает генерацию C#, и в нем определяется, как создается C# (или VB, если на то пошло).

Я не знаком с шаблоном, который вы хотите, но вы можете попробовать выпустить сгенерированные классы (если они не являются большими изменениями), поскольку они являются лишь частичными классами.

В противном случае вам нужно будет написать/искать пользовательскую реализацию SqlMetal

0

К сожалению, с частичными классами, которые вы не можете добавлять атрибутов к элементу из другой части частичного класса - то есть, если SqlMetal определяет свойство Foo, вам не может добавить атрибут в Foo в вашей собственной половине .cs.

Это убирает один из (обычно) более мощных способов настройки таких файлов ... вам, вероятно, придется либо рискнуть, либо вручную отредактировать сгенерированный файл (после полного его удаления из dbml) - или напишите свой собственный парсер dbml frmo scratch (mayhbe using xslt). Не просто.

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/