Insertion order of multiple records in Entity Framework

后端 未结 6 1775
陌清茗
陌清茗 2020-12-11 01:49

I\'m having trouble with EF reordering my inserts when I try and add an entity with multiple children all at once. I\'ve got a 3 level structure with one-to-many relationsh

6条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-11 02:42

    It's not professional. But, I solved my problem with this method.

    PublicMenu.cs file:

    public class PublicMenu
        {
            public int Id { get; set; }
    
            public int? Order { get; set; }
            
            public int? ParentMenuId { get; set; }
    
            [ForeignKey("ParentMenuId")]
            public virtual PublicMenu Parent { get; set; }
    
            public virtual ICollection Children { get; set; }
    
            public string Controller { get; set; }
    
            public string Action { get; set; }
    
            public string PictureUrl { get; set; }
    
            public bool Enabled { get; set; }
    }
    

    PublicMenus.json file

    [
        {
            "Order": 1,
            "Controller": "Home",
            "Action": "Index",
            "PictureUrl": "",
            "Enabled": true
        },
        {
            "Order": 2,
            "Controller": "Home",
            "Action": "Services",
            "PictureUrl": "",
            "Enabled": true
        },
        {
            "Order": 3,
            "Controller": "Home",
            "Action": "Portfolio",
            "PictureUrl": "",
            "Enabled": true
        },
        {
            "Order": 4,
            "Controller": "Home",
            "Action": "About",
            "PictureUrl": "",
            "Enabled": true
        },
        {
            "Order": 5,
            "Controller": "Home",
            "Action": "Contact",
            "PictureUrl": "",
            "Enabled": true
        }
    ]
    

    DataContextSeed file

        public class DataContextSeed
            {
                public static async Task SeedAsync(ICMSContext context, ILoggerFactory loggerFactory)
                {
                    try
                    {
                           if (!context.PublicMenus.Any())
                            {
                                var publicMenusData = File.ReadAllText("../Infrastructure/Data/SeedData/PublicMenus.json");
                                var publicMenus = JsonSerializer.Deserialize>(publicMenusData);
                                foreach (var item in publicMenus)
                                {
                                    context.PublicMenus.Add(item);
                                    await context.SaveChangesAsync();
                                }
                           }
                    }
                    catch (Exception ex)
                    {
                        var logger = loggerFactory.CreateLogger();
                        logger.LogError(ex.Message);
                    }
                }
       }
    

提交回复
热议问题