如何通过EF4 CTP5 Code First生成具有外键关系的复杂复合主键对象 [英] How to generate complex composite primary key objects with foreign key relationships through EF4 CTP5 Code First
问题描述
你好,
我正在评估Code First的CTP5,我真的很喜欢它,但是,我在格式化结果时遇到了一些困难我本来期待的。
I'm evaluating CTP5 of Code First, and I'm really enjoying it, however, I'm having some difficulty getting the results in the format I would have expected.
我有一个跟踪联盟球队的数据库。我在当前的SQL Schema中有以下基表:
I have a database for tracking teams in a league. I have the following base tables in my current SQL Schema:
Division和Team表基本上只是根引用,其中作为一个实际的团队,在给定季节的特定部门中保存在单独的表中:
The Division and Team tables are basically just root references, where as an actual team, in a given division in a given season are kept in separate tables:
这里有我希望用来生成等效模式的模型:
Here are the Models I'm hoping to use to generate an equivalent schema:
public class Context : DbContext
{
public DbSet<Season> Seasons { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<DivisionInSeason>()
.HasKey(l => new { l.DivisionId, l.SeasonId });
modelBuilder.Entity<TeamInDivision>()
.HasKey(l => new { l.TeamId, l.DivisionId, l.SeasonId });
modelBuilder.Entity<PlayerOnTeam>()
.HasKey(l => new { l.PlayerId, l.TeamId, l.SeasonId });
}
}
public class Season
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<DivisionInSeason> Divisions { get; set; }
}
public class Division
{
public int Id { get; set; }
public string DefaultName { get; set; }
}
public class DivisionInSeason
{
public string Name { get; set; }
public int DivisionId { get; set; }
public int SeasonId { get; set; }
[ForeignKey("DivisionId")]
public virtual Division Division { get; set; }
[ForeignKey("SeasonId")]
public virtual Season Season { get; set; }
public virtual ICollection<TeamInDivision> Teams { get; set; }
}
public class Team
{
public int Id { get; set; }
public string DefaultName { get; set; }
}
public class TeamInDivision
{
public string Name { get; set; }
public int TeamId { get; set; }
public int DivisionId { get; set; }
public int SeasonId { get; set; }
[ForeignKey("DivisionId")]
public virtual Division Division { get; set; }
[ForeignKey("SeasonId")]
public virtual Season Season { get; set; }
[ForeignKey("TeamId")]
public virtual Team Team { get; set; }
public virtual ICollection<PlayerOnTeam> Players { get; set; }
}
public class Player
{
public int Id { get; set; }
public string Name { get; set; }
}
public class PlayerOnTeam
{
public int PlayerId { get; set; }
public int TeamId { get; set; }
public int SeasonId { get; set; }
public int Number { get; set; }
public int Position { get; set; }
[ForeignKey("PlayerId")]
public virtual Player Player { get; set; }
[ForeignKey("TeamId")]
public virtual Team Team { get; set; }
[ForeignKey("SeasonId")]
public virtual Season Season { get; set; }
}
推荐答案
事实证明,我的模型中有一些错误我已经自固定以来。我还有一个不同的错误问题;我将为此打开一个新的主题。
As it turns out, I had some errors in my model that I've since fixed. I'm still having a problem with a different error; I'll open a new thread for that.
这篇关于如何通过EF4 CTP5 Code First生成具有外键关系的复杂复合主键对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!