Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 向数据库添加子对象的实体框架_C#_Entity Framework_Linq - Fatal编程技术网

C# 向数据库添加子对象的实体框架

C# 向数据库添加子对象的实体框架,c#,entity-framework,linq,C#,Entity Framework,Linq,我目前一直在使用lamda查询向数据库添加新的子实体。 我的数据库结构是区域与 shift 在我的种子数据库中,我在创建区域时填充轮班: new Area() { AreaDesc = "Area 1", AreaActive = true, AreaCreatedDate = DateTime.Now, SHFID = new Shift() { StartTime = new TimeSpan (5,30,00),

我目前一直在使用lamda查询向数据库添加新的子实体。 我的数据库结构是
区域
shift

在我的种子数据库中,我在创建区域时填充轮班:

new Area() 
{
    AreaDesc = "Area 1",
    AreaActive = true,
    AreaCreatedDate = DateTime.Now,
    SHFID = new Shift() 
    {
        StartTime = new TimeSpan (5,30,00),
        EndTime = new TimeSpan (11, 00, 00),
        RequiredResources = 2,
        ShiftDesc = "AM Shift",
        ShiftDayID = 1
    }
}
这很好,我正在努力,可能是因为对实体框架的理解不足,在现有的区域中添加了一个新的Shift

到目前为止,我有以下几点

var AreaVal = _context.Areas.Where(a => a.AreaID == AreaID).ToList();

var Shift = new Shift
{ 
    Area = AreaVal,
    StartTime = StartTime,
    EndTime = EndTime,
    ShiftDayID = model.ShiftDayID,
    ShiftDesc = model.ShiftDesc
};
认为一旦我有了正确的区域(我有来自模型的ID),我就可以加载区域,并将其作为移位中的区域参数传递,实体框架就会知道该做什么

我在解析器中得到的错误是:

无法将类型(Generic.List)隐式转换为 模型。区域

我也考虑过从另一个方向使用
\u context.Areas.Update()
,但一直无法很好地解决这个问题

额外信息,模型结构 Shift.cs

public class Shift
{
    [Key]
    public int SHFID { get; set; }
    public TimeSpan StartTime { get; set; }
    public TimeSpan EndTime { get; set; }
    public int RequiredResources { get; set; }
    public string ShiftDesc { get; set; }
    public int ShiftDayID { get; set; }
    public DateTime ShiftExDateStart { get; set; }
    public DateTime ShiftExDateEnd { get; set; }
    public int ShiftExLevel { get; set; }
    public TimeSpan ShiftExStartTime { get; set; }
    public TimeSpan ShiftExEndTime { get; set; }
    public Area Area { get; set; }
}
public class Area
{
    [Key]
    public int AreaID { get; set; }
    public string AreaDesc { get; set; }
    public Boolean AreaActive { get; set; }
    public DateTime AreaCreatedDate { get; set; }
    public List<Shift> SHFID { get; set; }
    public Company Company { get; set;}
}
Area.cs

public class Shift
{
    [Key]
    public int SHFID { get; set; }
    public TimeSpan StartTime { get; set; }
    public TimeSpan EndTime { get; set; }
    public int RequiredResources { get; set; }
    public string ShiftDesc { get; set; }
    public int ShiftDayID { get; set; }
    public DateTime ShiftExDateStart { get; set; }
    public DateTime ShiftExDateEnd { get; set; }
    public int ShiftExLevel { get; set; }
    public TimeSpan ShiftExStartTime { get; set; }
    public TimeSpan ShiftExEndTime { get; set; }
    public Area Area { get; set; }
}
public class Area
{
    [Key]
    public int AreaID { get; set; }
    public string AreaDesc { get; set; }
    public Boolean AreaActive { get; set; }
    public DateTime AreaCreatedDate { get; set; }
    public List<Shift> SHFID { get; set; }
    public Company Company { get; set;}
}
公共类区域
{
[关键]
公共int AreaID{get;set;}
公共字符串AreaDesc{get;set;}
公共布尔区域活动{get;set;}
公共日期时间AreaCreatedDate{get;set;}
公共列表SHFID{get;set;}
上市公司{get;set;}
}

您走在正确的轨道上

AreaVal
需要是单个实体(
Area
),而不是实体列表(
list
),然后它应该按预期工作

更改行:

var AreaVal = _context.Areas.Where(a => a.AreaID == AreaID).ToList();


马上就好了,谢谢你!