4

我有这个简单的课程:

CREATE TABLE [dbo].[Movie] (
  [MovieId] INT             IDENTITY (1, 1) NOT NULL,
[Title]   NVARCHAR (200)  NULL,
[Genre]   NVARCHAR (200)  NULL,
[Date]    DATE            NULL,
[Price]   DECIMAL (18, 2) NULL,
CONSTRAINT [PK_dbo.Movies] PRIMARY KEY CLUSTERED ([MovieId] ASC)
);

现在我想实现一个SpecialMovie... ,它有一个名为Special.

我正在使用数据库优先的方法。

我试图找到一些教程,但没有什么真正有用的。

我有一本 SQL Server 2008 书,它没有提到继承……继承在 SQL 中不是很重要吗?有点奇怪,它没有继承任何东西......

4

1 回答 1

-4

在 EF 中实现继承与普通的类继承完全相同,所以在这种情况下:

public class Movie
{
public int MovieID {get; set;}
//.....
}

public class SpecialMovie : Movie
{
public int SpecialMovieID {get; set;}
//.....

}

 public class MovieContext : DbContext
    {
        public DbSet<SpecialMovie> SpecialMovies { get; set; }
        public DbSet<Movie> Movies{ get; set; }
    }

请注意,在 SQL Server 等关系数据库中实际上并没有相应的继承结构。因此,EF 将以多种方式实现继承 Table per Hierarchy 可能是性能最高的,但它会对数据进行非规范化,以便 SpecialMovie 和 Movie 类的数据位于同一个表中,并且 EF 添加了一个描述符字段来区分这两个类. EF 还提供每种类型的表格和每种具体类型的表格。这里对所有三个都有很好的描述http://weblogs.asp.net/manavi/archive/2010/12/24/inheritance-mapping-strategies-with-entity-framework-code-first-ctp5-part-1 -table-per-hierarchy-tph.aspx

于 2013-02-03T12:21:49.220 回答