当我继续测试ormlite时,我遇到了另一个问题,这个问题似乎发生在servicestack.text.assemblyutils:中。
system.nullreferenceexception:object reference not set to an instance of an object.
在ServiceStack.Text.AssemblyUtils.ToTypeString(类型类型)
位于serviceStack.text.common.jsWriter`1.WriteType(textWriter编写器,对象值)
at serviceStack.text.common.writeListsOfElements`2.<>c_uuDisplayClass1_0.<.cctor>b_uuu 0(文本编写器,对象obj)
at serviceStack.text.common.writeListsOfElements`2.writeGenericList(textWriter writer,ilist`1列表)
位于ServiceStack.Text.TypeSerializer.SerializeToString(对象值,类型类型类型)
在serviceStack.text.typeserializer.serializeToString[t](t值)
at serviceStack.ormLite.ormLiteDialogProviderBase`1.GetFieldValue(FieldDefinition FieldDef,对象值)
在serviceStack.ormLite.ormLiteDialogProviderBase`1.GetValueOrDBNull[T](FieldDefinition FieldDef,Object Obj)
在serviceStack.ormLite.ormLiteDialogProviderBase`1.setParameterValue[T](FieldDefinition FieldDef,IDataParameter P,Object Obj)
at servicestack.ormlite.ormliteDialogProviderBase`1.setParameterValues[t](idbcommand dbcmd,object obj)
在serviceStack.ormLite.ormLiteWriteCommandExtensions.insert[t](idbcommand dbcmd,t obj,action`1 commandfilter,boolean selectIdentity)
在servicestack.ormlite.untypedapi`1.<>c_uu displayClass16_0.<insert>b_uuu 0(idbcommand dbcmd)
at serviceStack.ormLite.ormLiteExecFilter.exec[t](idbConnection dbconn,func`2筛选器)
在d:\[git]\core\coreservercommons\handlers\dbhandlers\ormlite\ormlitedbhandler.cs:line 253中的works.core.coreservercommons.handler.<>c ouu displayClass46_0.<addcoreObjectToDatabase>b ouu 0(idbConnection db)
< /代码>
当我使用非类型化的API插入一个对象时,就会发生这种情况,如下所示:
long insertedo=dbcluster.getdbandrun((idbConnection db)=>
{
coreObject.id=id;
var typedapi=db.createTypedapi(coreObject.getType());
返回typedapi.insert(coreObject,selectIdentity:true);
(});
< /代码>
我要插入的“coreObject:”
公共类模块控制器:actor
{
公共模块控制器(字符串用户名,列表<类型>联系人类型)
{
this.username=用户名;
this.contactTypes=联系人类型;
this.\u allowedLoginchannels=新建列表<类型>();
this._allowedloginchannels.add(typeof(coreclient));
}
公共列表<类型>联系人类型获取;设置;
}
< /代码>
我设法找出nullRef的来源:
基本上,如果在contacttypeslist中有一个nullentry,那么它会像上面那样失败。
现在,在这种情况下,列表不应该包含null
value,但是如果因为它,我没有在ServiceStack内部获得nullRef深度,从而阻碍了我持久化对象,我会感觉好多了。也许我想要一个nullthere?
它只是在列表中,还是字典不能有null的值?当持久化时,还有什么不能是null
ServiceStack是否应将其作为空值处理,因此在其JSON格式中,这很简单就是null?
当我使用非类型化API插入一个对象时,就会发生这种情况,如下所示:
long insertedId = dbCluster.GetDbAndRun((IDbConnection db) =>
{
coreObject.Id = id;
var typedApi = db.CreateTypedApi(coreObject.GetType());
return typedApi.Insert(coreObject, selectIdentity: true);
});
我要插入的“coreObject”是:
public class ModuleController : Actor
{
public ModuleController(string username, List<Type> contactTypes)
{
this.Username = username;
this.ContactTypes = contactTypes;
this._AllowedLoginChannels = new List<Type>();
this._AllowedLoginChannels.Add(typeof(CoreClient));
}
public List<Type> ContactTypes { get; set; }
}
我设法找出nullRef的来源:
基本上,如果NULL
进入ContactTypes
列出,然后失败,如上所述。
现在,在这种情况下,列表不应该包含无效的
值,但是如果因为这个原因没有在ServiceStack内部获得nullRef深度,从而阻碍了我持久化对象,我会感觉好多了。也许我想要一个无效的
那里?
它只是在列表中,还是字典中不能有无效的
值吗?还有什么不能无效的
坚持的时候?
ServiceStack不应该将其作为空值处理,所以在其JSON格式中,这很简单null
?