如何使用 entity framework c# 创建和插入一对多对象

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

我正在尝试创建一个对象并将其插入到数据库中,但无论我尝试什么,总是出现相同的错误。 我收到错误的行是 ColumnGroupTest.ValidValues.Add(memberComment1);错误是

错误信息

NullReferenceException was unhandled by user code

我的模特

    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; }
    }

我的控制器

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();
    }

(我很乐意在此处询问 help/guiding 时就我可以改进的地方提出建议)。

有人能帮忙吗?

您遇到的问题是您没有将 ValidValues 属性 初始化为列表。默认情况下,这些类型的属性初始化为 null,除非您指定不同。

最好的方法是将该初始化添加到该对象的构造函数中。

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