EF 6保存相关实体组合键

VAAA

我有以下EF实体:

public class EmployeeHoliday
    {

        public int HolidayId { get; set; }
        public int EmployeeId { get; set; }
        public DateTime StartDate { get; set; }
        public DateTime EndDate { get; set; }

        public bool IsActive { get; set; }

    }

    public class EmployeeHolidayItem
        {
            public int HolidayId { get; set; }
            public DateTime Date { get; set; }
            public int EmployeeId { get; set; }
            public string MasterEntity { get; set; }
            public bool IsRealHoliday { get; set; }
            public bool IsActive { get; set; }

        }

EF配置图为:

public EmployeeHolidayMap()
        {
            // Primary Key
            this.HasKey(t => t.HolidayId);

            // Properties
            this.Property(t => t.HolidayId)
               .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

            // Properties
            this.Property(t => t.EmployeeId)
                .IsRequired();

            // Table & Column Mappings
            this.ToTable("employee_holiday");
            this.Property(t => t.HolidayId).HasColumnName("holidayid");
            this.Property(t => t.EmployeeId).HasColumnName("employeeid");
            this.Property(t => t.StartDate).HasColumnName("startdate");
            this.Property(t => t.EndDate).HasColumnName("enddate");
            this.Property(t => t.IsActive).HasColumnName("isactive");

        }




public EmployeeHolidayItemMap()
        {
            // Primary Key
            this.HasKey(t => new { t.HolidayId, t.Date });

            this.Property(t => t.EmployeeId)
              .IsRequired();

            this.Property(t => t.MasterEntity)
             .IsRequired();


            // Table & Column Mappings
            this.ToTable("employee_holiday_item");
            this.Property(t => t.HolidayId).HasColumnName("holidayid");
            this.Property(t => t.Date).HasColumnName("date");
            this.Property(t => t.EmployeeId).HasColumnName("employeeid");
            this.Property(t => t.MasterEntity).HasColumnName("masterentity");
            this.Property(t => t.IsRealHoliday).HasColumnName("isrealholiday");
            this.Property(t => t.IsActive).HasColumnName("isactive");
        }

现在,我试图EmployeeHoliday用几个保存一个新文件EmployeeHolidayItems但是我HolidayId在EmployeeHolidayItems模型中键上得到了一个错误

这是用于插入新代码的代码EmployeeHoliday

int holidayId = 0;

var newRequest = new Model.EmployeeHoliday();

                newRequest.HolidayId = holidayId;

                newRequest.EmployeeId = request.EmployeeId;
                newRequest.StartDate = dates.FirstOrDefault();
                newRequest.EndDate = dates.LastOrDefault();
                newRequest.IsActive = true;


var newRequestDates = new List<Model.EmployeeHolidayItem>();

// Add Days to Holiday Item
                foreach (var date in dates)
                {
                    var newDate = new Model.EmployeeHolidayItem();

                    newDate.HolidayId = holidayId;
                    newDate.EmployeeId = request.EmployeeId;
                    newDate.MasterEntity = Uow.MasterEntity;
                    newDate.Date = date;
                    newDate.IsRealHoliday = true; 
                    newDate.IsActive = true;

                    // add to list
                    newRequestDates.Add(newDate);
                }

DbContext.EmployeeHoliday.Add(newRequest);
DbContext.EmployeeHolidayItem.AddRange(newRequestDates);

DbContext.SaveChanges();

在插入新记录时,有什么方法可以强制EmployeeHoliday和EmployeeHolidayItem之间的关系?我不想在“映射”中建立关系。

尤里亚姆·钱德拉

EmployeeHoliday上添加此属性

public class EmployeeHoliday
{
   public ICollection<EmployeeHolidayItem> EmployeeHolidayItems {get;set;}
}

并替换这个

DbContext.EmployeeHoliday.Add(newRequest);
DbContext.EmployeeHolidayItem.AddRange(newRequestDates);

newRequest.EmployeeHolidayItems = newRequestDates;
DbContext.EmployeeHoliday.Add(newRequest);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

EF 6禁用保存相关实体(虚拟)

来自分类Dev

在 EF6 中加载相关实体

来自分类Dev

EF Core:获取与过滤器匹配的实体,但仅通过组合键在其分组中具有最新datetime属性的实体

来自分类Dev

EF6渴望加载相关实体的单个属性

来自分类Dev

使用Linq返回EF6中的相关实体

来自分类Dev

通过EF 6 / Code First键查找本地缓存的实体

来自分类Dev

实体类型没有定义键EF6

来自分类Dev

EF核心:加载相关实体-循环依赖

来自分类Dev

EF-相关实体未加载

来自分类Dev

来自相关实体的EF Eager负载相关实体

来自分类Dev

EF6:使用外键关系修改实体属性-我是否需要更改ID或相关对象,或两者都更改?

来自分类Dev

实体框架组合键映射

来自分类Dev

EF映射到实体上的错误键

来自分类Dev

在EF6中建模外键的复合键(建模为实体引用)

来自分类Dev

在ef中更新实体

来自分类Dev

在ef中更新实体

来自分类Dev

EF6忽略相关数据

来自分类Dev

使用JSON中的EF保存复杂的实体

来自分类Dev

WPF / MVVM / EF-如何绑定到实体的相关实体?

来自分类Dev

EF中的复合键

来自分类Dev

WebApi的EF6合并实体

来自分类Dev

EF6实体的通用克隆

来自分类Dev

异步EF 6与打包的同步EF

来自分类Dev

用EF 6过滤

来自分类Dev

查找并包含EF 6

来自分类Dev

刷新EF 6 DBContext

来自分类Dev

外键查找下拉列表EF 6

来自分类Dev

EF6为可为空的外键生成空子实体

来自分类Dev

EF Core - 为什么实体在应该是外键关系时被保存为新的数据库实体?