Калі паказваюць дынамічныя пералікаў, як поля/ўласцівасці ў якасці 4.1 мадэлі Entity Framework?

Я спрабую разварушыць POC сістэмы, якая дазваляе ствараць і змяняць пералічэння, якія ў канчатковым рахунку, якія выкарыстоўваюцца ў дадатку, выкарыстоўваючы пярэдні канец. Нешта накшталт дынамічных пералічэнняў.

Напрыклад, у гіпатэтычным дадатку памылка трэкера, мы можам мець статус пералічэння, якія могуць мець значэння Адкрыць , прыняты і зачынены . Усе гэтыя пералічэнняў (і адпаведныя ім значэння) могуць быць зменены ў рэжыме рэальнага часу з дапамогай карыстацкага інтэрфейсу, так што гэта магчыма для адміністратара, каб прыдумаць новы пераназначаны значэнне, напрыклад (праз старонку адміністратара, хутчэй за ўсё) дзесьці жыцця прыкладання. Было б таксама можна ствараць новыя пералічэння, а таксама, у сваю чаргу, маюць свае ўласныя значэння (напрыклад, складанасць пералічэнняў).

Шлях я ў цяперашні час прадстаўляючы яго ў тым, што я буду мець Пералік класа, які мае 1: * спасылачныя з EnumerationValue класа ,

public class Enumeration {
    public string Name { get; set; }
    public ICollection Values { get; set; }
}

public class EnumerationValue {
    public string Name { get; set; }
    public string Description { get; set; }
}

Гэта лёгкая частка. Калі я дабяруся да стварэння арганізацыі, якая на самай справе выкарыстоўвае гэтыя дынамічныя пералічэнняў, я ўдарыў загвоздка.

Скажам Я ствараю BugRecord аб'ект, які, такім чынам, мае Статус ўласцівасці. Вынікаючы логіцы вышэй, я павінен быў бы напісаць яго па лініях:

public class BugRecord {
    public EnumerationValue Status { get; set; }
}

Але ўлічваючы, што я мог бы мець шмат розных Пералік s (і EnumerationValue s), ці ёсць спосаб для мяне, каб абмежаваць BugRecord.Status <код /> значэння толькі EnumerationValue s ў стан Пералік ? Калі не так, як бы вы рэкамендавалі мне вырашаць праблемы такога роду?

2
@chemicalNova ~ Я не думаю, што гэта так, «выклікаць Пералік суб'екты больш за ўсё групоўкі? Фактычныя значэння будуць EnumerationValue самі аб'екты. Так што калі статус пра памылку пласцінкі з'яўляецца актыўны , затым BugRecord.Status аналагічна новы EnumerationValue {Name = "Актыўны"} . Ці нешта ў гэтым родзе. Што вы маеце на ўвазе?
дададзена аўтар Richard Neil Ilagan, крыніца
Не павінна быць стан пералічэння, а не EnumerationValue?
дададзена аўтар chemicalNova, крыніца

1 адказы

Стварэнне трэцяга асобы/JoinTable EnumerationChoice і выкарыстоўваць яго для адлюстравання BugRecord ў EnumerationValue

public class EnumerationChoice {
    public Enumeration EnumerationCategory { get; set; }
    public EnumerationValue Value { get; set; }
}

BugRecord зараз становіцца:

public class BugRecord {
    public EnumerationChoice BugType { get; set; }
    public EnumerationChoice Status { get; set; }
}

Гэтыя дадзеныя будуць выглядаць так:

BugRecord:
    EnumerationChoice:
        -BugType
        -BugTypeValue1
    EnumerationChoice:
        -Status
        -Open

Такім чынам, калі вы спрабуеце запоўніць EnumerationChoice, вы можаце спасылацца на EnumerationCategory, каб атрымаць сапраўдныя EnumerationValues, ускладзеныя на яго.

2
дададзена