Первая аннотация данных базы данных ef5

Я начинаю MVC4 с VS2012. Я также использую EF5 с "База данных сначала " метод создания моих классов.

Однако, поскольку сгенерированные очки могут быть восстановлены, я не могу поместить подробные данные аннотации, чтобы помочь с проверкой.

Я видел некоторые фрагменты кода, которые используют MetaData и частичные классы, но мне было интересно, знает ли кто-нибудь о небольшом компилируемом примере, который я могу посмотреть и разобрать, чтобы лучше понять, как взаимосвязаны различные классы.

Большое спасибо за любую помощь. Дейв

 David Boccabella12 нояб. 2012 г., 02:53
Большое спасибо за этого Павла. Из быстрого просмотра (и попытки обновить проект до VS2012) это выглядит именно то, что мне нужно. Я'Я буду экспериментировать еще немного позже.
 Pawel05 нояб. 2012 г., 06:20
Какой тип проверки вы хотели бы выполнить и о каком механизме проверки (настраиваемый атрибут проверки, IValidatableObject и т. Д.) Вы думаете? Я думаю, у вас есть несколько вариантов (классы собеседников, частичные классы, обновление шаблонов T4) в зависимости от того, что вы хотите проверить и как вы хотите это проверить.
 David Boccabella09 нояб. 2012 г., 06:05
Привет, Павел. Извините, что не отвечаю раньше, но я не получил уведомление по электронной почте. В основном, тип проверки, который я хочу использовать, - это стандартная проверка аннотаций [Обязательный] и т. Д., Чтобы представление могло автоматически использовать ее. Большое спасибо за ответ. Дейв
 Pawel09 нояб. 2012 г., 20:27
Я думаю, вам нужно посмотреть на классы друзей. Посмотрите здесь:msdn.microsoft.com/en-us/library/ee256141(v=VS.100).aspx,stackoverflow.com/questions/2999936/... а такжеweblogs.asp.net/scottgu/archive/2010/01/15/... (ищи "приятель ")

Ответы на вопрос(1)

Вы можете достичь того, что вам нужно, с помощью расширения моделей. Предположим, что EF сгенерировал для вас следующий класс сущностей:

namespace YourSolution
{
    using System;
    using System.Collections.Generic;

    public partial class News
    {
        public int ID { get; set; }
        public string Title { get; set; }                  
        public int UserID { get; set; }

        public virtual UserProfile User{ get; set; }
    }
}

и вы хотите обойтись, чтобы сохранить свои аннотации и атрибуты данных. Итак, выполните следующие действия:

Сначала добавьте два класса, где (где вы хотите, но этолучше быть вModels) нравится следующее:

namespace YourSolution
{
    [MetadataType(typeof(NewsAttribs))]
    public partial class News
    {
         // leave it empty.
    }

    public class NewsAttribs
    {            
        // Your attribs will come here.
    }
}

затем добавьте, какие свойства и атрибуты вы хотите во второй класс -NewsAttribs Вот. :

public class NewsAttrib
{
    [Display(Name = "News title")]
    [Required(ErrorMessage = "Please enter the news title.")]
    public string Title { get; set; }

    // and other properties you want...
}

Заметки:

1) Пространство имен сгенерированного класса сущности и ваших классовдолжен быть таким же - Вот .YourSolution

2) ваш первый классдолжен бытьpartial и его имядолжен быть таким же, как EF сгенерированный класс.

Пройдите через это, и ваши атрибуты больше никогда не будут потеряны ...

 FirstDivision04 нояб. 2015 г., 00:32
Я собирался представить изменения, но я могут, так как редактирование не будетне менее 6 символов В любом случае, в последнем примере кода имя класса должно быть NewsAttribs, а не NewsAttrib.

Ваш ответ на вопрос