在 Servicestack.OrmLite Sql 服务器中使用合并时出错
Error using Merge in Servicestack.OrmLite Sql Server
使用最新版本https://github.com/ServiceStack/ServiceStack.OrmLite
[Schema("dbo")]
[Alias("ShelvingCount")]
public class ShelvingCount: IHasId<int>
{
[Alias("ShelvingCountId")]
[Index(Unique = true)]
[AutoIncrement]
public int Id { get; set;}
[Required]
[References(typeof(Account))]
public int AccountId { get; set; }
[Reference]
public Account Account { get; set; }
[Required]
public DateTime Date { get; set; }
[Required]
public int Quantity { get; set; }
[Required]
public int? Status { get; set; }
}
我删除了 属性 EmployeeId,它是员工 table 的外键。我忘了删除下面代码中的 "Merge command":
var result = await dbCon.SqlListAsync<ShelvingCount>("EXEC getAllShelvingCounts @accountId, @status, @fromDate, @toDate", new { accountId, status, fromDate, toDate });
// Load the references
var employees = dbCon.Select<Employee>();
result.Merge(employees);
return result;
然后就出现了下面的错误。我知道我应该删除合并命令。但是,在没有引用 table.
的情况下,可以通过忽略合并命令来修复它
{ResponseStatus:{ErrorCode:Exception,Message:Could not find Child Reference for 'Employee' on Parent 'ShelvingCount',StackTrace:"[AllShelvingCounts: 24/06/2015 4:15:01 AM]:
[REQUEST: {AccountId:0,Status:-1,FromDate:2015-06-22,ToDate:2015-06-24}]
System.Exception: Could not find Child Reference for 'Employee' on Parent 'ShelvingCount'
at ServiceStack.OrmLite.OrmLiteUtils.Merge[Parent,Child](List`1 parents, List`1 children)
at Next.Management.Repository.ShelvingCountRepository.<GetAllShelvingCounts>d__0.MoveNext() in c:\dev\Next\Logistics\Management\src\Management.Repository\Repository\ShelvingCountRepository.cs:line 26
是否有一些相关问题需要解决?
考虑到异常可能有助于开发人员删除无用的合并命令,提醒 servicestack 开发人员可能会很有趣。
这是按预期工作的,错误消息表明它找不到可以合并的静态关系,这否定了合并命令的目的 - 合并相关的结果集。当不存在静态定义的关系时,这显然是开发人员应该知道的错误,因为他们对 API 的使用没有按预期工作。
这与在静态类型语言中设置 non-existent/misspelt 属性 相同,即编译器反馈可以捕获开发人员的错误。
使用最新版本https://github.com/ServiceStack/ServiceStack.OrmLite
[Schema("dbo")]
[Alias("ShelvingCount")]
public class ShelvingCount: IHasId<int>
{
[Alias("ShelvingCountId")]
[Index(Unique = true)]
[AutoIncrement]
public int Id { get; set;}
[Required]
[References(typeof(Account))]
public int AccountId { get; set; }
[Reference]
public Account Account { get; set; }
[Required]
public DateTime Date { get; set; }
[Required]
public int Quantity { get; set; }
[Required]
public int? Status { get; set; }
}
我删除了 属性 EmployeeId,它是员工 table 的外键。我忘了删除下面代码中的 "Merge command":
var result = await dbCon.SqlListAsync<ShelvingCount>("EXEC getAllShelvingCounts @accountId, @status, @fromDate, @toDate", new { accountId, status, fromDate, toDate });
// Load the references
var employees = dbCon.Select<Employee>();
result.Merge(employees);
return result;
然后就出现了下面的错误。我知道我应该删除合并命令。但是,在没有引用 table.
的情况下,可以通过忽略合并命令来修复它{ResponseStatus:{ErrorCode:Exception,Message:Could not find Child Reference for 'Employee' on Parent 'ShelvingCount',StackTrace:"[AllShelvingCounts: 24/06/2015 4:15:01 AM]:
[REQUEST: {AccountId:0,Status:-1,FromDate:2015-06-22,ToDate:2015-06-24}]
System.Exception: Could not find Child Reference for 'Employee' on Parent 'ShelvingCount'
at ServiceStack.OrmLite.OrmLiteUtils.Merge[Parent,Child](List`1 parents, List`1 children)
at Next.Management.Repository.ShelvingCountRepository.<GetAllShelvingCounts>d__0.MoveNext() in c:\dev\Next\Logistics\Management\src\Management.Repository\Repository\ShelvingCountRepository.cs:line 26
是否有一些相关问题需要解决?
考虑到异常可能有助于开发人员删除无用的合并命令,提醒 servicestack 开发人员可能会很有趣。
这是按预期工作的,错误消息表明它找不到可以合并的静态关系,这否定了合并命令的目的 - 合并相关的结果集。当不存在静态定义的关系时,这显然是开发人员应该知道的错误,因为他们对 API 的使用没有按预期工作。
这与在静态类型语言中设置 non-existent/misspelt 属性 相同,即编译器反馈可以捕获开发人员的错误。