属性 'Id'是对象关键信息的一部分,不可修改。在插入
The property 'Id' is part of the object's key information and cannot be modified. On INSERT
我知道还有很多其他问题和我一样,但 none 的答案到目前为止对我有帮助。我正在使用 Code First 创建一个 mvc 网站。到目前为止,一切都很好。数据库已经创建,现在我想使用代码插入一些数据。但是不断收到该死的错误,就好像我没有主键一样。我可以使用 MSSQL 轻松地将数据插入 table。
该诊所已存在于数据库中,我正在使用正确的外键值。
如何创建 table:
//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();
正在创建 table
你提到
Id = c.Guid(nullable: false, identity: true),
所以它会被视为自动生成的字段
这就是当您尝试手动分配时出现此错误的原因。
如果您需要手动分配它,请使用此
修改您的对象class定义
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public Guid Id { get; set; }
我知道还有很多其他问题和我一样,但 none 的答案到目前为止对我有帮助。我正在使用 Code First 创建一个 mvc 网站。到目前为止,一切都很好。数据库已经创建,现在我想使用代码插入一些数据。但是不断收到该死的错误,就好像我没有主键一样。我可以使用 MSSQL 轻松地将数据插入 table。 该诊所已存在于数据库中,我正在使用正确的外键值。
如何创建 table:
//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();
正在创建 table 你提到
Id = c.Guid(nullable: false, identity: true),
所以它会被视为自动生成的字段
这就是当您尝试手动分配时出现此错误的原因。 如果您需要手动分配它,请使用此
修改您的对象class定义[DatabaseGenerated(DatabaseGeneratedOption.None)]
public Guid Id { get; set; }