使用EF映射对象

时间:2015-12-26 20:41:10

标签: entity-framework model ef-code-first mapping

我遇到了一些关于首先使用EF代码映射对象的问题。

我有三个班级:

-Employee -AssesmentOnEmployee -Assesment

员工与AssesmentOnEmployee有一对多的关系 AssesmentOnEmployee与Assement有一对一的关系。

代码:

public class AssesmentOnEmployee
{
    public int AssesmentOnEmployeeId { get; set; }

    public DateTime CreatedDate { get; set; }

    public virtual Assesment Assesments { get; set; }

    public virtual int AssesmentUserId { get; set; }

    public virtual Employee AssesmentUser { get; set; }
}

public class Employee
{
    public int EmployeeId { get; set; }

    public string Name { get; set; }

    public virtual ICollection<AssesmentOnEmployee> AssesmentOnEmployees { get; set; }
}

AppContext.cs:

modelBuilder.Entity<AssesmentOnEmployee>()
            .HasRequired(t => t.Assesments)
            .WithRequiredDependent(t => t.AssesmentOnEmployee);


modelBuilder.Entity<Employee>()
            .HasMany(t => t.AssesmentOnEmployees)
            .WithRequired(t => t.AssesmentUser).HasForeignKey(x => x.AssesmentUserId);

当我尝试添加迁移和更新数据库时,我收到此错误:

  

对象&#39; PK_dbo.AssesmentOnEmployee&#39;依赖于列&#39; AssesmentOnEmployeeId&#39;。   ALTER TABLE DROP COLUMN AssesmentOnEmployeeId失败,因为一个或多个对象访问此列。

有没有人可以解决我的问题?

1 个答案:

答案 0 :(得分:0)

这可能是很多事情。似乎AssesmentOnEmployee表已经存在,并且您正在尝试更改它,但它违反了PK约束。

解决问题的最简单方法是使用add-migration YourLastMigrationName -force删除现有表并再次生成迁移。

如果这不能解决您的问题,请在下面留言,然后我们可以尝试不同的方法。