C# 添加具有一对一子级的父级实例
我有一个父类parent,它与子类child有一对一的关系 当我添加一个新的父对象时,我希望同时在父对象上添加一个子对象 以下是我的课程:C# 添加具有一对一子级的父级实例,c#,nhibernate,fluent-nhibernate,C#,Nhibernate,Fluent Nhibernate,我有一个父类parent,它与子类child有一对一的关系 当我添加一个新的父对象时,我希望同时在父对象上添加一个子对象 以下是我的课程: public class Parent { public virtual int Id { get; } public virtual Child Child { get; set; } } public class Child { public virtual int Id { get; } public virtual
public class Parent
{
public virtual int Id { get; }
public virtual Child Child { get; set; }
}
public class Child
{
public virtual int Id { get; }
public virtual Parent Parent { get; set; }
}
我使用的是NHibernate和此处概述的HaOne/one-to-one映射:
下面是AddParentRequestHandler中my Handle()方法的代码:
var parent= new Parent();
var child = new Child()
{
Parent = parent;
};
parent.Child = child;
session.Save(parent);
执行此操作时,我得到以下错误:
无法将值NULL插入“ChildId”列、表“dbo.Parent”中;列不允许空值。插入失败。`
父项上的ChildId和子项上的ParentId都不是可为空的字段
有没有办法解决这个问题并保持这些字段不为空?
提前谢谢
当我添加一个新的父对象时,我希望同时在父对象上添加一个子对象
您只需将“Child”对象作为变量存储在“Parent”类中,并在“Parent”构造函数中创建“Child”的新实例
private Child child;
public Parent (){
...
child = new Child();
}
我需要做两件事来解决这个问题 首先,我从模式的父表中删除了ChildId列 然后,我移动了会话。保存在分配子项的代码上方:
var parent= new Parent();
session.Save(parent);
parent.Child = new Child
{
Parent = parent;
};
因此,现在我没有任何可为空的Id字段,可以将父项与子项持久化 第二节课不应该是孩子吗?是的。更正。谢谢