2015-06-24 3 views
0

Используя последнюю версию https://github.com/ServiceStack/ServiceStack.OrmLiteОшибка с использованием Объединить в Servicestack.OrmLite Sql Server

[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 который был ВНЕШНЯЯ ключ к таблице Employees. И я забыл удалить «команду Объединить» в коде ниже:

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; 

Тогда это привело к следующей ошибке. Я знаю, что я должен был удалить команду слияния. Однако его можно устранить, игнорируя команду Merge в случаях, когда нет ссылки на эту таблицу.

{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.

ответ

1

Это сообщение предназначено, сообщение об ошибке указывает, что оно не может найти статическую взаимосвязь, которая может быть объединена, что отрицает цель команды Merge - объединить связанные результирующие наборы. Когда не существует статически определенных отношений, которые существуют, это явно ошибка, о которой разработчик должен знать, поскольку их использование API не работает должным образом.

Это то же самое, что и установка несуществующего/пропущенного свойства в статически типизированном языке, то есть обратная связь компилятора, чтобы уловить ошибки разработчиков.

Смежные вопросы