2011-01-02 11 views
2

問題がありますコードファーストとEF4のCTP5で表現する方法を理解できません。EF4とコードファーストとの多対多の関係

EDIT:一番下に私の古いスキーマを追加しました私はCF

て複製したいと思いますここに私の特定のシナリオです:

チームは抽象的な概念です。それは、特定の季節に、特定の部門のプレーヤーの特定のセットと共に存在しなければならない。 NFLからのアクションで

本の具体的な例:

  • 1996(シーズン)AFC中央(部門)ヒューストン・オイラーズ(チーム)
  • 1997(シーズン)AFC中央(部門)テネシー・オイラーズ(チーム)
  • 1999(シーズン)AFC中央(部門)テネシー・タイタンズ(チーム)
  • 2002(シーズン)AFC南(部門)テネシー・タイタンズ(チーム)

これらはすべて同じチームです。私は、次の操作を実行できるようにしたい:

// Titans team id = 17 
var myTeam = myContext.Teams.Single(t => t.Id == 17) 

// display players 
foreach (var p in myTeam.Seasons[1999].Players) 
{ 
    // Do something with the p here 
} 

// Display current division 
Response.Write(myTeam.Seasons[2002].Division.Name); 

私はmyTeam.SeasonsのICollectionをメンバ変数内の特定のクエリ構文のわからないんだけど、コンセプトは同じ何も少なくないはずです。

EF4 CF CTP5でこの概念をどのようにCFで表現するかについて、誰かが気軽に話すことができますか? コードファーストでこれをどのように表現しますか?

現在のSQLテーブル

CREATE TABLE dbo.Season 
(
    Id    INT IDENTITY(1,1)  NOT NULL, 
    LeagueId   INT     NOT NULL, 
    [Name]   NVARCHAR(50)   NOT NULL, 
    [Year]   CHAR(4)    NOT NULL, 
    PrevSeasonId  INT   NULL 

) ON [PRIMARY]; 

// Primary key 
ALTER TABLE dbo.Season WITH NOCHECK ADD 
    CONSTRAINT PK_Season PRIMARY KEY NONCLUSTERED (Id) ON [PRIMARY]; 

CREATE TABLE dbo.Division 
(
    Id  INT IDENTITY(1,1)  NOT NULL, 
    DefaultName NVARCHAR(50)   NOT NULL 
) ON [PRIMARY]; 

// Primary key 
ALTER TABLE dbo.Division WITH NOCHECK ADD 
    CONSTRAINT PK_Division PRIMARY KEY NONCLUSTERED (Id) ON [PRIMARY]; 

// Key Relation Table 
CREATE TABLE dbo.DivisionsInSeason 
(
    DivisionId  INT     NOT NULL, 
    SeasonId  INT     NOT NULL, 
    DefaultName NVARCHAR(50)   NOT NULL, 
    Commissioner UNIQUEIDENTIFIER  NOT NULL, 
    ParentDivId INT    NULL 
) ON [PRIMARY]; 

// Primary Key 
ALTER TABLE dbo.DivisionsInSeason WITH NOCHECK ADD 
    CONSTRAINT PK_DivisionsInSeason PRIMARY KEY NONCLUSTERED (DivisionId, SeasonId) ON [PRIMARY] ; 

// Foreign Keys  
ALTER TABLE dbo.DivisionsInSeason WITH CHECK ADD 
    CONSTRAINT FK_DivisionsInSeason_Division FOREIGN KEY(DivisionId) REFERENCES dbo.Division(Id), 
    CONSTRAINT FK_DivisionsInSeason_Season FOREIGN KEY(SeasonId) REFERENCES dbo.Season(Id), 
    CONSTRAINT FK_DivisionsInSeason_User FOREIGN KEY(Commissioner) REFERENCES dbo.[User](Id); 

CREATE TABLE dbo.Team 
(
    Id  INT IDENTITY(1,1)  NOT NULL, 
    DefaultName  NVARCHAR(50)   NOT NULL, 
    DefShortName  NCHAR(3)   NULL 
) ON [PRIMARY]; 

// Primary key 
ALTER TABLE dbo.Team WITH NOCHECK ADD 
    CONSTRAINT PK_Team PRIMARY KEY NONCLUSTERED (Id) ON [PRIMARY] ; 

// Key relationship table 
CREATE TABLE dbo.TeamsInDivision 
(
    TeamId   INT    NOT NULL, 
    DivisionId  INT    NOT NULL, 
    SeasonId  INT    NOT NULL, 
    GeneralManager UNIQUEIDENTIFIER NOT NULL, 
    Name   NVARCHAR(50)  NOT NULL, 
    ShortName  NCHAR(3)   NULL 

) ON [PRIMARY]; 

// Check Constraints 
ALTER TABLE dbo.TeamsInDivision ADD 
    CONSTRAINT PK_TeamsInDivision PRIMARY KEY NONCLUSTERED (TeamId, DivisionId, SeasonId) ON [PRIMARY]; 

// Foreign Keys  
ALTER TABLE dbo.TeamsInDivision WITH CHECK ADD 
    CONSTRAINT FK_TeamsInDivision_Team FOREIGN KEY(TeamId) REFERENCES dbo.Team(Id), 
    CONSTRAINT FK_TeamsInDivision_Division FOREIGN KEY(DivisionId) REFERENCES dbo.Division(Id), 
    CONSTRAINT FK_TeamsInDivision_Season FOREIGN KEY(SeasonId) REFERENCES dbo.Season(Id), 
    CONSTRAINT FK_TeamsInDivision_User FOREIGN KEY(GeneralManager) REFERENCES dbo.[User](Id); 

答えて