如何通过EF4 CTP5 Code First生成具有外键关系的复杂复合主键对象 [英] How to generate complex composite primary key objects with foreign key relationships through EF4 CTP5 Code First

查看:163
本文介绍了如何通过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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆