首页 新闻 赞助 找找看

Code First 生成表的问题

0
悬赏园豆:20 [已解决问题] 解决于 2013-12-18 16:54

有三个实体:

 public class TAs
    {
        public string ID { get; set; }
        public string Name { get; set; }
   
        public virtual ICollection<TCs> TCs { get; set; }
    }

 public class TBs
    {
        public string ID { get; set; }
        public string Name { get; set; }
   
        public virtual ICollection<TCs> TCs { get; set; }
    }

 public class TCs
    {
        public string TBId { get; set; }
        public string TAId { get; set; }
        public string Name { get; set; }
        public Nullable<System.DateTime> Birthday { get; set; }
   
        public virtual TAs TAs { get; set; }
        public virtual TBs TBs { get; set; }
    }

要在数据库中生成如下图的表,该如何实现?

其中TCs中的TBId,TAId为TAs,TBs的外键同时也为自己的主键

静女的主页 静女 | 初学一级 | 园豆:27
提问于:2013-12-17 15:17
< >
分享
最佳答案
0

TCs

 1     public class TCs
 2     {
 3         [Key, Column(Order = 0)]
 4         public string TBId { get; set; }
 5         [Key, Column(Order = 1)]
 6         public string TAId { get; set; }
 7         public string Name { get; set; }
 8         public Nullable<System.DateTime> Birthday { get; set; }
 9 
10         [ForeignKey("TAId")]
11         public virtual TAs TAs { get; set; }
12 
13         [ForeignKey("TBId")]
14         public virtual TBs TBs { get; set; }
15     }
View Code

TAs

1     public class TAs
2     {
3         [KeyAttribute]
4         public string ID { get; set; }
5         public string Name { get; set; }
6 
7         public virtual ICollection<TCs> TCs { get; set; }
8     }
View Code

TBs

1     public class TBs
2     {
3         [KeyAttribute]
4         public string ID { get; set; }
5         public string Name { get; set; }
6 
7         public virtual ICollection<TCs> TCs { get; set; }
8     }
View Code
收获园豆:20
Jarrett.zhou | 初学一级 |园豆:69 | 2013-12-17 18:11

你这种方法也行,但我后来找到了更简洁的办法:


    public class TCConfiguration : EntityTypeConfiguration<TC>
    {
        public TCConfiguration()
        {
            HasKey(m => new { m.TAID, m.TBID });
            HasRequired(o => o.TA).WithMany(o => o.TC).HasForeignKey(o => o.TAID);
            HasRequired(o => o.TB).WithMany(o => o.TC).HasForeignKey(o => o.TBID);
        }
    }

你这个也能够解决问题,那豆豆还是给你拉

静女 | 园豆:27 (初学一级) | 2013-12-18 16:51

你这种方法也行,但我后来找到了更简洁的办法,TC加个TAID,TBID,其他的不要用Attribute去修饰了


    public class TCConfiguration : EntityTypeConfiguration<TC>
    {
        public TCConfiguration()
        {
            HasKey(m => new { m.TAID, m.TBID });
            HasRequired(o => o.TA).WithMany(o => o.TC).HasForeignKey(o => o.TAID);
            HasRequired(o => o.TB).WithMany(o => o.TC).HasForeignKey(o => o.TBID);
        }
    }

你这个也能够解决问题,那豆豆还是给你拉

静女 | 园豆:27 (初学一级) | 2013-12-18 16:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册