如何在构造函数中创建相关实体?

时间:2020-05-13 15:38:34

标签: c# sqlite entity-framework-core ef-core-3.1

根据example添加这样的新实体图

using (var context = new BloggingContext())
{
var blog = new Blog
{
        Url = "http://blogs.msdn.com/dotnet",
        Posts = new List<Post>
        {
            new Post { Title = "Intro to C#" },
            new Post { Title = "Intro to VB.NET" },
            new Post { Title = "Intro to F#" }
        }
    };
     context.Blogs.Add(blog);
     context.SaveChanges();
}

在我的模型中,有一个资源以及通过导航属性ScheduleWork与之关联的实体。

public class Resource : ObservableObject
{
    public int ResourceId { get; set; }
    public ScheduleWork ScheduleWork { get; set;};

}
public class ScheduleWork : ObservableObject
{
    public int ScheduleWorkId { get; set; }

    public double MondayHours { get; set; }
    public double TuesdayHours { get; set; }
    public double WednesdayHours { get; set; }
    public double ThursdayHours { get; set; }
    public double FridayHours { get; set; }
    public double SaturdayHours { get; set; }
    public double SundayHours { get; set; }

    public ScheduleWork()
    {
        MondayHours = 8;
        TuesdayHours = 8;
        WednesdayHours = 8;
        ThursdayHours = 8;
        FridayHours = 8;
        SaturdayHours = 0;
        SundayHours = 0;
    }
}

在创建资源的新实例时,我需要自动创建ScheduleWork实例。我以各种方式尝试过: 1.Всвойственавигации

public ScheduleWork ScheduleWork { get; set;} = new ScheduleWork();
  1. 构造函数
    public Resource()
    {
        ScheduleWork = new ScheduleWork();
    }
  1. 创建实例资源
ObservableCollection<Resource> Resource;
        DbAppContext dbAppContext;
        dbAppContext = new DbAppContext();
        Resource = dbAppContext.Resource.Local.ToObservableCollection();
        dbAppContext.Resource.Load();
        Resource.Add(new Resource(){ScheduleWork = new ScheduleWork()});
        dbAppContext.SaveChanges();
  1. 在创建资源实例后通过向导航属性分配新实例
    ObservableCollection<Resource> Resource;
                DbAppContext dbAppContext;
                dbAppContext = new DbAppContext();
                Resource = dbAppContext.Resource.Local.ToObservableCollection();
                dbAppContext.Resource.Load();
                Resource.Add(new Resource(){});
                Resource[0].ScheduleWork = new ScheduleWork();
                dbAppContext.SaveChanges();

只有在将更改保存到ScheduleWork表中的数据库之后的4种情况下,才添加新记录。这是为什么?创建资源的每个实例时,如何在没有其他代码的情况下进行添加?

0 个答案:

没有答案