c# - Entity Framework 将子对象添加到数据库

标签 c# entity-framework linq

我目前一直坚持使用 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/

相关文章:

c# - 使用dbContext的正确方法

entity-framework - .NET EntityStoreSchemaFilterEntry 过滤器模式

entity-framework - Entity Framework 数据库开发入门(代码优先)

c# - 没有时间部分的日期时间比较?

c# - 如何选择与列表中所有 ID 匹配的所有对象?

c# - 如何对我正在使用的不安全的C#CLR和程序集进行签名,而不是使数据库值得信赖

c# - 多点触控点击次数

c# - 如何将 linq 结果转换为 HashSet 或 HashedSet

entity-framework - ASP.Net Core MVC 日期输入值

c# - SelectMany on { key, values } 的元组 - 在结果中获取键?