by kevin
4.
六月 2013 21:42
>
现在开发的项目中使用fluentdata进行数据访问,简单易用,但是,也是有坑爹的bug。
先记录2个:
1 IStoredProcedureBuilderDynamic StoredProcedure(string storedProcedureName, ExpandoObject item) 参数类型明明是ExpandoObject,还是需要做一次显示转换。
A. Bad
1: var command = DefaultContext.StoredProcedure("InsertSPName", Entity)
2: .AutoMap().ParameterOut("EntityId", DataTypes.Int32, 4);
3: command.Execute();
4: return command.ParameterValue<int>("EntityId");
B. OK
1: var command = DefaultContext.StoredProcedure("InsertSPName", (ExpandoObject)DanymicObject)
2: .AutoMap().ParameterOut("EntityId", DataTypes.Int32, 4);
3: command.Execute();
4: return command.ParameterValue<int>("EntityId");
2. IStoredProcedureBuilder Parameter(string name, object value);
参数类型是object , 但是如果传入的参数是ExpandoObject的一个属性,返回值就变成object了。需要将传入的参数显示转换成简单类型。
A. Bad
1: public int Update(dynamic entity)
2: {
3: IStoredProcedureBuilder iStoredProcedureBuilder = DefaultContext.StoredProcedure("EntityUpdate")
4: .Parameter("Title", entity.Title)
5: .Parameter("Entity_Id", entity.EntityId);
6: return iStoredProcedureBuilder.Execute();
7: }
B. OK
1: public int Update(dynamic entity)
2: {
3: IStoredProcedureBuilder iStoredProcedureBuilder = DefaultContext.StoredProcedure("EntityUpdate")
4: .Parameter("Title", entity.Title as string)
5: .Parameter("Entity_Id", (int)entity.EntityId);
6: return iStoredProcedureBuilder.Execute();
7: }