Entity Framework对同一张表配置一对几近干。Entity Framework对平张表配置一针对性大多涉及。

by admin on 2018年11月15日

当事实上的种类开支被,可能会见遇到同样张表同时保留自身与上级(或下级)的消息(一般是经过设置一个上面主键【ParentId】的排列与主键【Id】关系)

在实际的花色支付中,可能会见碰到相同张表同时保留自身和顶头上司(或下属)的信(一般是透过安装一个上面主键【ParentId】的排与主键【Id】关系)

诸如:城市库,有国家、省、市…,省之ParentId是国之Id,同理市之ParentId是看看的Id

例如:城市库,有国家、省、市…,省之ParentId是国的Id,同理市底ParentId是省之Id

图片 1

图片 2

图片 3图片 4

图片 5图片 6

public class City
    {
        /// <summary>
        /// Id
        /// </summary>
        public int Id { get; set; }
        /// <summary>
        /// 名称
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// 上级Id
        /// </summary>
        public int? ParentId { get; set; }
        /// <summary>
        /// 下级地区
        /// </summary>
        public virtual ICollection<City> ChildCitys { get; set; }
        /// <summary>
        /// 上级地区
        /// </summary>
        public virtual City Parent { get; set; }
    }
public class City
    {
        /// <summary>
        /// Id
        /// </summary>
        public int Id { get; set; }
        /// <summary>
        /// 名称
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// 上级Id
        /// </summary>
        public int? ParentId { get; set; }
        /// <summary>
        /// 下级地区
        /// </summary>
        public virtual ICollection<City> ChildCitys { get; set; }
        /// <summary>
        /// 上级地区
        /// </summary>
        public virtual City Parent { get; set; }
    }

View
Code

View
Code

图片 7图片 8

图片 9图片 10

public class CityMap : EntityTypeConfiguration<City>
    {
        public CityMap()
        {
            ToTable("City");
            HasKey(c => c.Id);
            Property(c => c.Id).HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity);
            Property(c => c.Name).HasMaxLength(50);

            //配置关系
            HasMany(c => c.ChildCitys).WithOptional(c => c.Parent).HasForeignKey(k => k.ParentId);
        }
    }
public class CityMap : EntityTypeConfiguration<City>
    {
        public CityMap()
        {
            ToTable("City");
            HasKey(c => c.Id);
            Property(c => c.Id).HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity);
            Property(c => c.Name).HasMaxLength(50);

            //配置关系
            HasMany(c => c.ChildCitys).WithOptional(c => c.Parent).HasForeignKey(k => k.ParentId);
        }
    }

View
Code

View
Code

图片 11图片 12

图片 13图片 14

static void Main(string[] args)
        {

            var country = new City {  Name="中国" };
            var province = new City { Name = "广东省" };
            var citys = new List<City>
            {
                new City { Name="广州" },
                new City { Name="深圳" },
                new City { Name="珠海" }
            };
            province.ChildCitys = citys;
            country.ChildCitys = new List<City> { province };
            EFContext<City> context = new EFContext<City>();
            context.Table.Add(country);
            context.SaveChanges();
            Console.WriteLine("ok");
            Console.ReadKey();
        }
static void Main(string[] args)
        {

            var country = new City {  Name="中国" };
            var province = new City { Name = "广东省" };
            var citys = new List<City>
            {
                new City { Name="广州" },
                new City { Name="深圳" },
                new City { Name="珠海" }
            };
            province.ChildCitys = citys;
            country.ChildCitys = new List<City> { province };
            EFContext<City> context = new EFContext<City>();
            context.Table.Add(country);
            context.SaveChanges();
            Console.WriteLine("ok");
            Console.ReadKey();
        }

View
Code

View
Code

 运行控制台程序

 运行控制台程序

图片 15

图片 16

接下来查数据库:

然后查数据库:

图片 17

图片 18

 

 

 示例祭的是Entity Framework
6.X,同时上面的关系是0..1←→N,因为国没有上面(ParentId为null)

 示例祭的是Entity Framework
6.X,同时上面的涉及是0..1←→N,因为国没有上面(ParentId为null)

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图