EF4中多对多关系表模型

数据库中有这样的三张表,Artist,Album,ArtistAlbum

 

Artist和Album是多对多的关系,ArtistAlbum 是Artist和Album的关联表。ArtistAlbum 是双主键,除了Artist和Album表的ID外没有其他任何其他字段。

新建一个项目,添加一个ADO.NET Entity Data Model,在数据库中选择上面三张表:

 

EMD中并没有关联表ArtistAlbum并没有作为一个实体呈现在EDM中 

  下面的代码是向Artist和Album表添加新的数据和在model中查询Artist的Album以及Album所属的Artist

 ExpandedBlockStart.gif代码

             using  (EFDemoEntities context  =   new  EFDemoEntities())
            {
                
//  add an artist with two albums
                var artist  =   new  Artist { ArtistName  =   " 徐悲鸿 "  };
                var album1 
=   new  Album { AlbumName  =   " 八骏图 "  };
                var album2 
=   new  Album { AlbumName  =   " 八丑图 "  };
                artist.Albums.Add(album1);
                artist.Albums.Add(album2);
                context.Artists.AddObject(artist);
                
//  add an album for two artists
                var artist1  =   new  Artist { ArtistName  =   " zjz "  };
                var artist2 
=   new  Artist { ArtistName  =   " 张大千 "  };
                var album 
=   new  Album { AlbumName  =   " 大虾图 "  };
                artist1.Albums.Add(album);
                artist2.Albums.Add(album);
                context.Albums.AddObject(album);
                context.SaveChanges();
            }

            
using  (EFDemoEntities context  =   new  EFDemoEntities())
            {
                Console.WriteLine(
" Artists and their albums... " );
                var artists 
=  from a  in  context.Artists select a;
                
foreach  (var artist  in  artists)
                {
                    Console.WriteLine(
" {0} " , artist.ArtistName);
                    
foreach  (var album  in  artist.Albums)
                    {
                        Console.WriteLine(
" \t{0} " , album.AlbumName);
                    }
                }
                Console.WriteLine(
" \nAlbums and their artists... " );
                var albums 
=  from a  in  context.Albums select a;
                
foreach  (var album  in  albums)
                {
                    Console.WriteLine(
" {0} " , album.AlbumName);
                    
foreach  (var artist  in  album.Artists)
                    {
                        Console.WriteLine(
" \t{0} " , artist.ArtistName);
                    }
                }
            }

 

输出结果如下:

 

 

转载于:https://www.cnblogs.com/zjz008/archive/2010/06/30/1768306.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值