属性“Id”是对象的关键信息的一部分,无法修改。关于INSERT

时间:2015-05-22 18:28:27

标签: c# entity-framework ef-code-first

我知道还有很多像我这样的问题,但迄今为止没有一个答案对我有帮助。我正在使用Code First创建一个mvc网站。到现在为止还挺好。数据库已经创建,现在我想使用代码插入一些数据。但是继续得到该死的错误,好像我没有主键。我可以使用MSSQL轻松地将数据插入表中。 诊所已经存在于数据库中,我正在使用正确的外键值。

如何创建表:

//CreateTable(
            "dbo.Department",
            c => new
                {
                    Id = c.Guid(nullable: false, identity: true),
                    Clinic_Id = c.Guid(nullable: false),
                    Title = c.String(),
                    Description = c.String(),
                    LastModifiedAt = c.DateTime(nullable: false),
                    CreatedAt = c.DateTime(nullable: false),
                })
            .PrimaryKey(t => t.Id)
            .ForeignKey("dbo.Clinic", t => t.Clinic_Id)
            .Index(t => t.Clinic_Id);

部门对象:

    public class Department
{
    public Guid Id { get; set; }
    public Guid Clinic_Id { get; set; }
    public Clinic Clinic { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
    public List<Patient> Patients { get; set; }
    public List<Practitioner> Practitioners { get; set; }
    public DateTime LastModifiedAt { get; set; }
    public DateTime CreatedAt { get; set; }

    public Department()
    {
    }
}

我创建了对象

    private void CreateDepartment(Clinic clinic, int departmentNumber)
    {
        Department department = new Department();
        department.Id = Guid.NewGuid();
        department.CreatedAt = DateTime.Now;
        department.Description = "Description";
        department.LastModifiedAt = DateTime.Now;
        department.Clinic_Id = clinic.Id;
        department.Title = "Title";
        DepartmentList.Add(department);
    }

然后尝试将其添加到我的上下文中:

DepartmentList.ForEach(x => context.Departments.Add(x));
            context.SaveChanges();

1 个答案:

答案 0 :(得分:0)

创建表时

你提到了

Id = c.Guid(nullable: false, identity: true),

因此它将被视为自动生成的字段

这就是为什么当您尝试手动分配时出现此错误的原因。 如果需要手动分配,请使用此

修改对象类定义
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public Guid Id { get; set; }