如何使用EF Core C#将List <>数据添加到List <>变量

时间:2019-09-04 09:45:16

标签: c# entity-framework asp.net-web-api

我正在创建一个CRUD Web API,我只是遵循此Microsoft tutorial。就我而言,我有two models

First_Model.cs

// i removed other unnecessary data
public string Id { get; set; }
public IList<Second_Model> Second_Models {get; set;} = new List<Second_Model>();

Second_Model.cs

// i removed other unnecessary data
public string Id { get; set; }

就像在本教程中一样,它将静态添加集合的默认值,因此我想将List<Second_Model>添加到Second_Models

这就是我在First_ModelController.cs中尝试过的内容

_context.First_Models.Add(
    new First_Model {
        Id = "default_id",
        Second_Models = new List<Second_Model>() {
            new List<Second_Model>().Find(p => p.Id == "default_id")
            // given that Second_Model also has default_id
        };
    }
);

但是,这组代码将返回此错误:

ArgumentNullException: Value cannot be null. Parameter name: key

1 个答案:

答案 0 :(得分:0)

静态创建对象列表看起来像这样:

....
Id = "default_id",
Second_Models = new List<Second_Model>() {
    new Second_Model() { Id = "<your second model ID 1>", OtherProperty = <value> },
    new Second_Model() { Id = "<your second model ID 2>", OtherProperty = <value> },
}

但是,如果要直接将它们添加到上下文中,则可以执行以下操作:

_context.Second_Models.Add(
    new Second_Model() {
        Id = "<your second model ID 1>",
        OtherProperty = <value>,
    }
);
... repeat ...

尽管如此,第二个模型和第一个模型并没有关联。
您可能需要阅读有关在EF模型上定义外键的更多信息,因此,请使它们全部结合在一起,因为我认为本教程不包含与此相关的任何内容。