模型/实体与复杂类型

时间:2013-05-08 19:57:39

标签: c# asp.net-mvc entity-framework

我在ASP MVC和C#中理解复杂数据类型与实体的问题。我首先创建了以下类型,它不是一个实体(数据库表):

public class Period : IPeriod
{
    public DateTime From { get; set; }
    public DateTime To { get; set; }
}

我将此类型添加到模型中:

public class Event
{
    public int ID { get; set; }
    public string Title { get; set; }
    public Period EventTime { get; set; }
}

这很好用。它似乎明白Period是一个复杂的类型,但不是一个实体。它只是将EventTime_From和EventTime_To列添加到Event表中。

然而,我通过删除接口,将类移动到不同的命名空间并向类添加方法,为Period类型添加了一些复杂性。突然,当尝试重建数据库时,它突然被解释为实体类型,因此抛出了一个错过主键的异常。

这里的系统是什么?何时将类视为复杂类型,何时将它们视为实体?

1 个答案:

答案 0 :(得分:2)

很难说在不知道所做的所有更改的情况下究竟发生了什么,但您可以通过使用Period属性标记{或{1}}来明确告诉EF ComplexType是复杂类型流畅的映射:

modelBuilder.ComplexType<Period>();