我有一个要保存的实体的客户端图。当我尝试添加实体时(如下所述),Breeze 报告标题错误。
我能够按需排除/包含实体,因此能够让 Breeze 在图中保留其他所有内容,然后最后尝试添加该实体。错误始终报告。
我在控制器的 saveBundle 中捕获了实体的 JSON 表示,并且能够手动将其插入到数据库中,这让我可以确保它被正确创建。
我不知道如何进一步调试它,并希望得到一些指导。
这是代码优先类(必需:日期时间、值、消息、用户):
public Guid ID { get; set; }
public Guid MessageID { get; set; }
public Guid UserID { get; set; }
public DateTime DateTime { get; private set; }
public float Value { get; set; }
public virtual Message Message { get; set; }
public virtual User User { get; set; }
public virtual ICollection<PropertyValue> PropertyValues { get; set; }
这是保存包:
{
"entities": [
{
"ID": "cdc7a329-1ddc-4535-98f1-fd878af48823",
"MessageID": "57e88bc1-edc2-4905-af74-09df83edeba5",
"UserID": "1269a0ad-1019-471c-bdf9-a6e61aea468c",
"DateTime": "2013-01-04T23:32:01.067Z",
"Value": 0,
"entityAspect": {
"entityTypeName": "Score:#MyProjectName.Repo",
"entityState": "Added",
"originalValuesMap": {},
"autoGeneratedKey": {
"propertyName": "ID",
"autoGeneratedKeyType": "Identity"
}
}
}
],
"saveOptions": {
"allowConcurrentSaves": false
}
}
这是SQL:
insert into Scores (
[MessageID],
[UserID],
[DateTime],
[Value]
) values (
'57e88bc1-edc2-4905-af74-09df83edeba5',
'1269a0ad-1019-471c-bdf9-a6e61aea468c',
'2013-01-04T23:28:18.872Z',
0
)
更新
服务器的事件版本以“System.ArgumentNullException”开头
Value cannot be null.\r\nParameter name: source
和:
at System.Linq.Enumerable.Select[TSource,TResult](IEnumerable`1 source, Func`2 selector)
at Breeze.WebApi.EFContextProvider`1.SaveChangesCore(Dictionary`2 saveMap)
at Breeze.WebApi.ContextProvider.SaveChanges(JObject saveBundle)
at [MyProject].[MyController].SaveChanges(JObject saveBundle) in ..\Controllers\[MyController].cs:line 53
at lambda_method(Closure , Object , Object[] )
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass13.<GetExecutor>b__c(Object instance, Object[] methodParameters)
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments)
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.<>c__DisplayClass5.<ExecuteAsync>b__4()
at System.Threading.Tasks.TaskHelpers.RunSynchronously[TResult](Func`1 func, CancellationToken cancellationToken)