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ここで、 。という1つの追加プロパティを持つ...を実装したいと思いますSpecial

私はデータベースファーストのアプローチで働いています。

私はいくつかのチュートリアルを見つけようとしましたが、本当に役に立ったものは何もありませんでした。

私はSQLServer2008の本を持っていますが、継承については何も述べていません...継承は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 はいくつかの方法で継承を実装します 階層ごとのテーブルはおそらく最もパフォーマンスが高いですが、SpecialMovie クラスと Movie クラスの両方のデータが同じテーブルに存在するようにデータを非正規化し、EF は記述子フィールドを追加して 2 つのクラスを区別します. EF は、Table-per-type と Table per Concrete Type も提供しています。ここに3つすべての良い説明があります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 に答える