我目前一直坚持使用 lamda 查询向我的数据库添加新的子实体。
我的数据库的结构是 Area
与
轮类
在我的种子数据库中,我在创建区域时填充类次:
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
}
}
效果很好,但我在这方面遇到了困难,可能是由于对 Entity Framework 功能缺乏了解,正在向现有的区域添加新的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),我就可以加载区域并将其作为区域<Shift 中的/strong> 参数和 Entity Framework 会知道要做什么。
我在解析器中遇到的错误是:
Cannot implicitly convert type (Generic.List to Models.Area.
我也考虑过使用 _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; }
}
Area.cs
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;}
}
最佳答案
你走在正确的道路上。
AreaVal
需要是单个实体 ( Area
),而不是实体列表 ( List<Area>
)。然后它应该按预期工作。
更改行:
var AreaVal = _context.Areas.Where(a => a.AreaID == AreaID).ToList();
到
var AreaVal = _context.Areas.Where(a => a.AreaID == AreaID).Single();
关于c# - Entity Framework 将子对象添加到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36323849/