c# - NHibernate Fluently 异常 - 对象不能从 DBNull 转换为其他类型
问题描述
我不可能传递解决此问题所需的所有信息。
我需要提示,类似问题的解决方案……诸如此类。
当我解决它时,我会标记帮助我解决问题的答案并发布它是如何完成的。
感谢所有提供任何信息的人。
只有少数列被映射并Id
设置为“PK”。我不知道发生了什么。
- 我尝试从
ID
列中删除 Nullabe,同样的问题 - 将整个项目更改为
Decimal
不使用Decimal?
,同样的问题 - 在谷歌上没有找到任何关于这个的东西
就像 NHibernate 上的某个人IsDbNull()
在反射之前忘记检查一样。
班级
public class BaseMap<T> : ClassMap<T> where T : IEntity
{
public BaseMap()
{
Id(x => x.Id, "ID").GeneratedBy.TriggerIdentity();
}
}
public class UsuarioMap : BaseMap<Usuario>
{
public UsuarioMap()
{
//Indica qual a tabela deve ser utilizada.
Table("FUNCIONARIO");
Map(x => x.CodigoReduzido, "FUN_CODIGO");
Map(x => x.CodPerfilBiomeek, "PER_CODIGO");
Map(x => x.Local, "LOC_CODIGO");
Map(x => x.Nome, "FUN_NOME");
Map(x => x.DataInclusao, "FUN_DT_INC");
Map(x => x.UsuarioInclusao, "FUN_FUN_INC");
}
}
桌子
例外
System.InvalidCastException: Object cannot be cast from DBNull to other types.
at System.DBNull.System.IConvertible.ToDecimal(IFormatProvider provider)
at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
at NHibernate.Id.Insert.OutputParamReturningDelegate.ExecuteAndExtract(IDbCommand insert, ISessionImplementor session)
at NHibernate.Id.Insert.AbstractReturningDelegate.PerformInsert(SqlCommandInfo insertSQL, ISessionImplementor session, IBinder binder)
at NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object[] fields, Boolean[] notNull, SqlCommandInfo sql, Object obj, ISessionImplementor session)
at NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object[] fields, Object obj, ISessionImplementor session)
at NHibernate.Action.EntityIdentityInsertAction.Execute()
at NHibernate.Engine.ActionQueue.Execute(IExecutable executable)
at NHibernate.Event.Default.AbstractSaveEventListener.PerformSaveOrReplicate(Object entity, EntityKey key, IEntityPersister persister, Boolean useIdentityColumn, Object anything, IEventSource source, Boolean requiresImmediateIdAccess)
at NHibernate.Event.Default.AbstractSaveEventListener.PerformSave(Object entity, Object id, IEntityPersister persister, Boolean useIdentityColumn, Object anything, IEventSource source, Boolean requiresImmediateIdAccess)
at NHibernate.Event.Default.AbstractSaveEventListener.SaveWithGeneratedId(Object entity, String entityName, Object anything, IEventSource source, Boolean requiresImmediateIdAccess)
at NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.SaveWithGeneratedOrRequestedId(SaveOrUpdateEvent event)
at NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.EntityIsTransient(SaveOrUpdateEvent event)
at NHibernate.Event.Default.DefaultSaveEventListener.PerformSaveOrUpdate(SaveOrUpdateEvent event)
at NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.OnSaveOrUpdate(SaveOrUpdateEvent event)
at NHibernate.Impl.SessionImpl.FireSave(SaveOrUpdateEvent event)
at NHibernate.Impl.SessionImpl.Save(Object obj)
解决方案
推荐阅读
- python-3.x - 如何在 Pandas 数据框中用模式替换列值?
- gcc - SSE2 颜色混合
- c# - 使用 html 敏捷包获取文本值
- scala - 为什么我可以在没有关键字“new”的情况下创建新的 Random
- python - 如何在python中找到一个列表而不是另一个列表的子列表?
- javascript - 单击 .NET Core 中的单选按钮时 FORM 未提交
- android - android中的PeriodicWorkRequest
- javascript - 如何在反应原生地图中获得缩放级别
- ios - 仅发送数据块(通过 CoreBlueTooth)
- javascript - 未定义的对象,使用 NodeJS 和 Mongoose 从 MongoDB 获取模式较少的数据