【问题标题】:Map objects with EF使用 EF 映射对象
【发布时间】:2016-04-01 05:06:33
【问题描述】:

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

我有三个班级:

-员工 -AssesmentOnEmployee -评估

Employee 与 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);

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    如果这不能解决您的问题,请在下方发表评论,然后我们可以尝试不同的方法。

    【讨论】:

    • 它没有工作,我不知道我哪里出错了。运行我的 add-migration MyLastMigrationName -force Update-Database 后,我仍然收到此消息对象“PK_dbo.AssesmentOnEmployee”依赖于列“AssesmentOnEmployeeId”。 ALTER TABLE DROP COLUMN AssesmentOnEmployeeId 失败,因为一个或多个对象访问此列。
    • 显示迁移脚本文件中生成的代码
    猜你喜欢
    • 1970-01-01
    • 2017-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2019-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多