我知道还有很多像我这样的问题,但迄今为止没有一个答案对我有帮助。我正在使用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();
答案 0 :(得分:0)
你提到了
Id = c.Guid(nullable: false, identity: true),
因此它将被视为自动生成的字段
这就是为什么当您尝试手动分配时出现此错误的原因。 如果需要手动分配,请使用此
修改对象类定义[DatabaseGenerated(DatabaseGeneratedOption.None)]
public Guid Id { get; set; }