C# NHibernate映射问题(我认为)
好的,我有一个名为“Business”的对象(我知道,我知道,“Business object”) 当它保存它的外键时,不知怎的丢失了。其他一切都在节省。我已经完成了代码并跟踪对象直到 session.SaveOrUpdate(businessObject) 方法。此时的对象是完整的,并且外来属性似乎在那里。但是,保存时,外部ID不在业务表中。我只能想象这可能是因为我没有正确地映射它们 以下是它们的映射位置:C# NHibernate映射问题(我认为),c#,.net,nhibernate,nhibernate-mapping,C#,.net,Nhibernate,Nhibernate Mapping,好的,我有一个名为“Business”的对象(我知道,我知道,“Business object”) 当它保存它的外键时,不知怎的丢失了。其他一切都在节省。我已经完成了代码并跟踪对象直到 session.SaveOrUpdate(businessObject) 方法。此时的对象是完整的,并且外来属性似乎在那里。但是,保存时,外部ID不在业务表中。我只能想象这可能是因为我没有正确地映射它们 以下是它们的映射位置: <many-to-one insert="false" update="fals
<many-to-one insert="false" update="false" name="_Township" column="TownshipId" class="HQData.Objects.Township, HQData" />
<many-to-one insert="false" update="false" name="_User" column="UserId" class="HQData.Objects.User, HQData" />
<many-to-one insert="false" update="false" name ="_SubCategory" column="SubCategoryId" class="HQData.Objects.SubCategory, HQData"/>
谢谢你的帮助 你是认真的。_SubCategory.SubCategory id 不确定GetCurrentUser返回什么,但如果Id也是
business.\u User.UserId?将插入更新属性设置为true或删除它们。对象在business.cs文件中映射为:public virtual User{get;Set;}因此,我认为我无法设置ID值,我设置了整个对象,否?是,看起来您正在为子类别而不是子类别对象设置int。不要设置Id值,而是将子类别设置为object.Crap nevermind,只是看到了CategoryManager.GetCategory中的int内容。哎呀。
HQData.Objects.Business business = null;
if (BusinessId != 0)
business = BusinessManager.GetBusiness(BusinessId);
else
business = new HQData.Objects.Business();
business._SubCategory = CategoryManager.GetCategory(Convert.ToInt32(ddlCategory.SelectedValue.Trim()));
business.Name = ControlHelper.Sanitize(txtName.Text.Trim());
business.Address1 = ControlHelper.Sanitize(txtAddress.Text.Trim());
business._Township = TownshipManager.GetTownshipByCityorZip(ControlHelper.Sanitize(txtTownship.Text));
business.PhoneNumber = ControlHelper.Sanitize(txtPhone.Text.Trim());
business.FaxNumber = ControlHelper.Sanitize(txtFax.Text.Trim());
business.Email = ControlHelper.Sanitize(txtEmail.Text.Trim());
business.Website = ControlHelper.Sanitize(txtWebsite.Text.Trim());
business.AboutUs = ControlHelper.Sanitize(txtAboutUs.Text.Trim());
business._User = UserManager.GetCurrentUser();
BusinessManager.SaveBusiness(business);