2013-04-24 2 views
0

В настоящее время я создаю проект динамических данных ASP.NET с LINQ to SQL для доступа к данным. Я знаю, что добавление атрибута DisplayName к одному из моих свойств приведет к тому, что мне нужно, но я хотел бы избежать этого в коде, создаваемом конструктором LINQ to SQL.Атрибут DisplayName для Linq To Sql и динамических данных

Есть ли еще один простой способ сделать то, что мне нужно, или мне нужно укусить пулю и просто создать свои собственные метаданные?

+0

Не знаю, имеете ли вы следующее «укусить пулю», но поскольку сущности генерируются как частичные, вы можете создать частичный класс для конкретной сущности и использовать ['MetadataTypeAttribute'] (http: // msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations .metadatatypeattribute (v = vs.100) .aspx) Если у вас возникли проблемы с этим, взгляните на этот вопрос [Проблема с метаданными] (http://stackoverflow.com/questions/1871499/metadatatype-problem) – Silvermind

+0

У меня уже есть пошел по пути частичных классов, чтобы изменить способ отображения имен каждой из таблиц, но я не уверен, как это сделать с каждым из столбцов/свойств, поскольку я не могу их дублировать в частичном классе, чтобы для добавления соответствующих атрибутов. –

+0

Почему вы не можете дублировать их внутри метаданных? Это не дубликаты внутри частичного класса, а полудублицы внутри класса метаданных. Дополнительный частичный класс просто должен быть украшен '[MetadataType (typeof (EntityMetaData))]' – Silvermind

ответ

1

Вы можете использовать MetadataTypeAttribute для этого, как описано в MSDN.

Из документации, но для полноты картины (немного переделал, чтобы запечатать метаданные внутри класса):

Если у вас есть объект Customer с Title собственности, вы бы определить свойство снова в metadata class

using System; 
using System.Web.DynamicData; 
using System.ComponentModel.DataAnnotations; 

[MetadataType(typeof(Customer.CustomerMetaData))] 
public partial class Customer 
{ 

    class CustomerMetaData 
    { 
     // Apply RequiredAttribute 
     [Required(ErrorMessage = "Title is required.")] 
     public string Title; 
    } 

} 
+0

Для noobs, подобных мне: вы в основном создаете новый класс с теми же свойствами, что и исходный класс, а затем присоединяете свои атрибуты к новому классу. Затем вы можете добавить атрибут MetadataType в исходный класс. –

+0

@SonnyBoy Да, Кроме того: этот метод является еще более эффективным, если вы используете класс метаданных внутри частичного класса с префиксом 'Customer' в атрибуте. – Silvermind