首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EF 6保存相关实体组合密钥

EF 6保存相关实体组合密钥
EN

Stack Overflow用户
提问于 2014-07-28 15:57:41
回答 1查看 168关注 0票数 0

我有以下EF实体:

代码语言:javascript
复制
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配置图是:

代码语言:javascript
复制
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,但是在EmployeeHolidayItems模型中的HolidayId键出现了一个错误。

这是插入新EmployeeHoliday的代码

代码语言:javascript
复制
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之间的关系吗?我不想在我的地图里建立这种关系。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-28 16:12:30

EmployeeHoliday类上添加此属性。

代码语言:javascript
复制
public class EmployeeHoliday
{
   public ICollection<EmployeeHolidayItem> EmployeeHolidayItems {get;set;}
}

并替换这个

代码语言:javascript
复制
DbContext.EmployeeHoliday.Add(newRequest);
DbContext.EmployeeHolidayItem.AddRange(newRequestDates);

使用

代码语言:javascript
复制
newRequest.EmployeeHolidayItems = newRequestDates;
DbContext.EmployeeHoliday.Add(newRequest);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24999203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档