Используя базу данных MVC4 в первую очередь, как аннотировать модели составным первичным ключом?

Я новичок в MS MVC4, и мне дали базу данных, для которой я должен создать интерфейс CRUD. Все таблицы имеют составные первичные ключи в форме [TableID, TableName, EffectiveDate]. Я не могу изменить дизайн базы данных. Я использовал метод Database-first и инструмент EF 5.x DbContext для C# для создания моделей, но сгенерированные файлы моделей не содержат аннотаций для составных ключей. Вот пример таблицы отдела с первичным ключом = [DeptID, DeptName, EffDate].

//------------------------------------------------------------------------------
// <auto-generated>
//    This code was generated from a template.
//
//    Manual changes to this file may cause unexpected behavior in your application.
//    Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace BillableUnits4.Models
{
    using System;
    using System.Collections.Generic;

    public partial class Department
    {
        public int DeptID { get; set; }
        public string DeptName { get; set; }
        public System.DateTime EffDate { get; set; }
        public string Status { get; set; }
        public string Fund { get; set; }
        public string DeptNo { get; set; }
        public string RevenueAccount { get; set; }
        public string BalanceSheetAccount { get; set; }
    }
}

Держу пари, ключи должны выглядеть так:

    [key] 
    public int DeptID { get; set; }
    [key]
    public string DeptName { get; set; }
    [key]
    public System.DateTime EffDate { get; set; }

Нужно ли мне аннотировать первичные ключевые компоненты? Если да, следует ли добавлять аннотации к сгенерированным файлам моделей? (регенерация файлов, очевидно, удалит любые изменения, которые я делаю вручную). Есть ли способ сообщить MVC4/Visual Studio о создании файлов с правильными аннотациями?


person JohnG    schedule 14.01.2013    source источник
comment
Для меня аннотации на уровне модели ничего не меняют. Система Scaffolding не интерпретирует их для меня. Это для вас?   -  person Marcel    schedule 11.03.2013


Ответы (1)


Вам не нужно аннотировать то, что очевидно для базы данных :) В вашем коде не будут использоваться аннотации, специфичные для базы данных, поэтому я не беспокоюсь об этом.

Возможно, вы захотите украсить свою модель [Required] или другими аннотациями, которые имеют смысл для согласованности данных вашего приложения. В таком случае вы можете использовать частичные классы (http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx) или внедрив ViewModels (что вы можете изменить, не беспокоясь об автоматически сгенерированных классах, которые вам действительно не следует изменять)

person Paweł Staniec    schedule 14.01.2013
comment
Спасибо за быстрый ответ. Я собираюсь использовать решение с частичным классом для украшения, так как оно кажется наиболее разумным для моего проекта. - person JohnG; 15.01.2013