0

В ASP.NET я использую Entity Framework с кодовым подходом и хочу, чтобы на основе моей модели была создана таблица DB. Одним из атрибутов является значение Enum, и оно не отображается как столбец в сгенерированной таблице.Entity Framework enum атрибут для столбца таблицы (код-первый подход)

Так что это мое перечисление:

public enum MyEnum 
{ 
    val_one = 1, 
    val_two = 2, 
    val_three = 3 
} 

И это моя модель:

public class MyModel 
{ 
    public int Id { get; set; } 
    public string attrString { get; set; } 
    public double attrDouble { get; set; } 
    public MyEnum attrEnum { get; set; } 
} 

Так с подходом кодового первым я сформировав таблицу со следующими столбцами:

CREATE TABLE [dbo].[MyModel] 
(
    [Id]   INT   IDENTITY (1, 1) NOT NULL, 
    [attrString] NVARCHAR (MAX) NOT NULL, 
    [attrDouble] FLOAT (53)  NOT NULL, 
    [attrEnum]  INT   NOT NULL, 
    CONSTRAINT [PK_dbo.MyModel] PRIMARY KEY CLUSTERED ([Id] ASC) 
); 

И позже, когда вы создаете формы (контроллер и представления) на основе модели, у меня есть формы, где attrEnum отсутствует.

Итак, как действовать, чтобы иметь этот атрибут enum (в формате раскрывающегося списка) в формах (по-прежнему используя подход, основанный на кодах). Я предполагаю, что может потребоваться генерация другой таблицы DB, которая будет содержать перечисления, но я действительно не уверен, как это сделать в Entity Framework, так как я начинаю в ней.

+0

См. Этот популярный вопрос http://stackoverflow.com/questions/388483/how-do-you-create-a-dropdownlist-from-an-enum-in-asp-net-mvc –

+0

База данных не имеет ничего прямого делать с вашими формами. Вам необходимо изменить представления, которые вы изменили. – DavidG

ответ

0

Вы могли бы принять более легкий подход ...

В контроллере, например:

public ActionResult Edit(int? id) 
    { 
     List<SelectListItem> myOptions = new List<SelectListItem>(); 
     myOptions.Add(new SelectListItem() { Text="1", Value = "1" }); 
     myOptions.Add(new SelectListItem() { Text = "2", Value = "2" }); 
     myOptions.Add(new SelectListItem() { Text = "3", Value = "3" }); 
     ViewData["OptionList"] = new SelectList(myOptions, "Value", "Text"); 

Тогда в Edit.cshtml:

@Html.DropDownListFor(model => model.Status, (SelectList)ViewData["OptionList"], new { @class = "form-control dropdown" }) 

Вы получаете красивый стилизованный выпадающий список с параметрами, которые вы ищете.

 Смежные вопросы

  • Нет связанных вопросов^_^