简体   繁体   中英

How do I create and insert one-to-many object with entity framework c#

I'm trying to create an object and insert to the database but keep getting the same error no matter what I try. The row that I get the error on is ColumnGroupTest.ValidValues.Add(memberComment1); the error is

error message

NullReferenceException was unhandled by user code

my models

    public class StoreColumnName
    {
        public int Id { get; set; }
        public string StoreColumnGroupName { get; set; }
        public string ColumnName { get; set; }
        public string ColumnType { get; set; }
        public List<StoreValidValue> ValidValues { get; set; }
    }

    public class StoreValidValue
    {
        public int Id { get; set; }
        public string ValidValue { get; set; }
        public StoreColumnName StoreColumnName { get; set; }
    }

my controller

public ActionResult Index()
    {
        XDocument document = XDocument.Load(@"C:\Users\Physical.xml");
        var result = document.Descendants("ColumnGroup");
        foreach(var item in result){    
                var ColumnGroupName = item.Attribute("name").Value;
                var Columns = item.Descendants("Column");

                foreach (var itemColumn in Columns)
                {
                    StoreColumnName ColumnGroup = new StoreColumnName();
                    var ColumnGroupTest = new StoreColumnName
                    {
                        StoreColumnGroupName = ColumnGroupName, 
                        ColumnName = itemColumn.Attribute("name").Value, 
                        ColumnType = itemColumn.Attribute("type").Value, 
                        Id = 11
                    };
                    var ValidValues = itemColumn.Descendants("ValidValues");
                    var Values = ValidValues.Descendants("Value");

                    foreach (var Value in Values)
                    {
                        var memberComment1 = new StoreValidValue
                        {
                            StoreColumnName = ColumnGroupTest,
                            ValidValue = Value.Value,
                            Id = 101
                        };
                        ColumnGroupTest.ValidValues.Add(memberComment1);
                    }
                }
        }
        return View();
    }

(I gladly take tips on what I can improve when asking for help/guiding here).

Can anyone help ?

The issue that you're having is that you don't initialize your ValidValues property to a list. By default, those types of properties initialize to null unless you specify differently.

The best approach is to add that initialization to your constructor of that object.

public StoreColumnName() {
    this.ValidValues = new List<StoreValidValue>();
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM