我想在人和车之间实现一对多的关系,并对人和车进行 CRUD 操作。简要的 CRUD 和关系:
更新
- A
person
有很多cars
- 通过人员对象对人员和汽车进行 CRUD 操作。
- 删除一个人将删除他/她的所有汽车
- 能够通过人对象或汽车对象对某人的汽车执行 CRUD 操作。
是否可以通过 ORM,特别是 NHibernate?
像下面这样的类:
public class PersonSet
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual ISet<CarSet> Cars { get; set; }
}
public class CarSet
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual PersonSet Person { get; set; }
}
映射如下图:
public class PersonSetMap : ClassMapping<PersonSet>
{
public PersonSetMap()
{
Id(x => x.Id, m=>m.Generator(Generators.Identity));
Property(x=>x.Name);
Set(x => x.Cars, c =>
{
//c.Key(k =>
// {
// k.Column("PersonId");
// });
c.Cascade(Cascade.All);
c.Lazy(CollectionLazy.NoLazy);
// c.Inverse(true);
}
, r =>
{
r.OneToMany();
}
);
}
}
public class CarSetMap : ClassMapping<CarSet>
{
public CarSetMap()
{
Id(x => x.Id, m => m.Generator(Generators.Identity));
Property(x => x.Name);
ManyToOne(x => x.Person, m =>
{
m.Column("PersonId");
m.Cascade(Cascade.None);
m.NotNullable(true);
});
}
}
我遇到的问题是,如果我更新一辆车并尝试将其保存在一个人对象上,它不会改变。
更新
我想知道它是否可能,以及我上面的映射在哪里是错误的。任何关于 xml 版本或 Loquacious 的想法也将不胜感激。
table 上应该有一个PersonId
外键Car
。