私は2つのテーブルのBuildGroupとテーブルDocumentTemplateを持っています。 DocumentTemplateテーブルには、NULL可能な外部キーとしてBuildGroupIdがあります。特定のシナリオでは、DocumentTemplateテーブルのBuildGroupIdを更新します。私は DBNull.Valueを再びDocumentTemplateテーブルにBuildGroupIdを設定する必要が別のsenarioでNhibernateを使用してNull値に外部キーを更新する
public bool EditDocTempForBldGrp(int docId, int bldGrpId)
{
try
{
using (ISession session = Document.OpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
HSDocumentTemplate objDocBO = new HSDocumentTemplate();
objDocBO = GetDocumentDetailsById(docId);
HSBuildGroup objBldGrp = new HSBuildGroup();
if (bldGrpId != 0)
{
objBldGrp.Id = bldGrpId;
}
else
{
//int ? bldid = null;
//objDocBO.HSBuildGroup.Id = null;
//objDocBO.HSBuildGroup.Id = DBNull.Value;
//objDocBO.HSBuildGroup.Id = -1;
}
objDocBO.HSBuildGroup = objBldGrp;
session.Update(objDocBO);
transaction.Commit();
}
}
return true;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return false;
}
}
。私は、他のブロックと異なるケースで試しました。それはエラーを与えます: 暗黙の型 'System.DBNull'を 'int'に変換できません。 外部キーの値をNULLで更新するにはどうすればよいですか?どんな助けもありがとう。
私はあなたが小さなエラーを持っていると思います:それはsession.Get(docId)であるべきではありません.HSBuildGroup = bldGrpId == 0? null:session.Load (bldGrpId); –