Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 添加具有一对一子级的父级实例_C#_Nhibernate_Fluent Nhibernate - Fatal编程技术网

C# 添加具有一对一子级的父级实例

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

我有一个父类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 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字段,可以将父项与子项持久化

第二节课不应该是孩子吗?是的。更正。谢谢