我来自Django,在定义模型时使用Django的ORM,我可以设置选项,例如:
class MyModel(Model):
CHOICES = (...) # List of choices here
# it has tu be a 2-tuple list
# but that's is not the point right now.
choice = IntegerField(choices=CHOICES) # Set the choices.
现在,当MyModel
用于创建实例时,属性(属性)choice
只能包含CHOICES
中定义的值。
EntityFrameworkCore-2.0 有这样的内容吗?
这是可能的吗?
class MyEntity
{
[choices=EnumDefiningChoices]
property enum choices { get; set; }
}
答案 0 :(得分:1)
属性可以有一个定义的值,int
,string
等,以便存储在数据库中。
一种方法是使用2个表,一个用于您的实体,另一个用于选择。
<强> myEntity所强>
public class MyEntity
{
public int Id { get; set; }
// all the other properties
public int ChoiceId { get; set; } // Here is the refference for the choice
public virtual Choice Choice { get; set; }
}
<强>选择强>
public class Choice
{
public int Id { get; set; }
public string Name { get; set; }
}
正如您所见,ChoiceId
仅允许Choice
表中的值。
但是,如果您想使用Enum
,则没有使用EF的“阻止”机制,这必须在应用程序级别实现。
答案 1 :(得分:0)
使用EF&gt; 6你可以这样做:
public enum Option
{
option_1 = 1,
option_2,
option_3
}
class SomeEntity
{
public Option Option { get; set; }
}
您可以使用以下命令获取枚举选项名称:
var option_name = Option.GetName(typeof(Option), some_entity.option_2);
Console.WriteLine(option_name);
<强>参考强>