C# 将具有导航属性的对象添加到数据库时发生了什么?
我上过这样的课:C# 将具有导航属性的对象添加到数据库时发生了什么?,c#,entity-framework,C#,Entity Framework,我上过这样的课: class City { long CityId {get;set;} string Name {get;set;} List<House> Houses {get;set;} } class城市 { long CityId{get;set;} 字符串名称{get;set;} 列表房屋{get;set;} } 用一些Houses对象填充List,我想用db.Cities.add(someCity)将City添加到数据库中 房屋是否
class City
{
long CityId {get;set;}
string Name {get;set;}
List<House> Houses {get;set;}
}
class城市
{
long CityId{get;set;}
字符串名称{get;set;}
列表房屋{get;set;}
}
用一些Houses对象填充List
,我想用db.Cities.add(someCity)
将City
添加到数据库中
房屋
是否也会在那一刻自动添加
假设我的导航属性设置正确,我还需要做什么来自动添加
房屋
?是的,它们会,但要考虑到,如果这样做,将在表中创建新的房屋
条目。若你们想关联现有房屋,你们需要添加一个从数据库中检索到的实体。为什么不试试呢?@HimBromBeere:是的,请原谅我这个愚蠢的问题。我坐在大量没有这个概念的代码前面,我想知道我是否可以简化它。这是否取决于House
对象是否已经有一个有效的ID/主键?如果它们有一个主键,但没有附加到上下文,实体框架将尝试插入它们,并引发异常。在这种情况下,您需要为列表中的每个房子调用Context.Houses.Attach(house)
。实体框架跟踪每个实例状态,所以它需要知道它是被修改的还是一个全新的实例实体框架一无所知。