这是一个简单的问题,但我似乎找不到解决方案。 我有两个类,如下所示:
public class Person{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
public int Id{get;set;}
public string Name {get;set;}
public CarType Cartype {get;set;}
}
public class CarType{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
public int Id{get;set;}
public string Type {get;set;}
public string CompanyLocation {get;set;}
}
假设我有两种CarType,如下所示:
1 Mercedes Berlin
2 Chevrolet Detroit
我有一个人,如下:
1 Mike 2 (2 is the foreign key to `CarType`)
问题是,如何将CarType
的Mike更改为1(即,将对表CarType
中另一行的引用更改)?
这是我的代码:
Person person = dbContext.Persons.Single(c => c.Id == 1);
CarType carType= dbContext.CarTypes.Single(c => c.Id == 1);
person.CarType= carType;
我尝试找到here的答案
但是我在做dbContext.SaveChanges()
时仍然遇到相同的错误:
属性“ Id”是对象键信息的一部分,不能 被修改
问题是我不想更新它引用的CarType
,我想将引用更改为另一行
答案 0 :(得分:2)
人应该是这样
public class Person{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
public int Id{get;set;}
public string Name {get;set;}
[ForeignKey("Cartype ")]
public int CarTypeID{get;set;}
public CarType Cartype {get;set;}
}
之后,您可以使用以下方法在Person对象中更改CarType 下面的代码
person.CarTypeID= carType.Id;
dbContext.SaveChanges();