3

我在理解 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 类型增加了一些复杂性。突然,当试图重建数据库时,它突然被解释为一个实体类型,从而抛出一个缺少主键的异常。

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

4

1 回答 1

2

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

modelBuilder.ComplexType<Period>();
于 2013-05-08T20:23:08.860 回答