2015-04-13 2 views
0

Я пытаюсь загрузить ссылки, но в данном случае с двумя эталонными из тех же таблиц, что не работаетServiceStack OrmLite Мульти самостоятельная литература ошибка

[Required] 
public DateTime CreatedOn { get; set; } 
public DateTime? ModifiedOn { get; set; } 

[References(typeof(Employee))] 
public int? CreatedById { get; set; } 
[Reference] 
public Employee CreatedBy { get; set; } 

[References(typeof(Employee))] 
public int? ModifiedById { get; set; } 
[Reference] 
public Employee ModifiedBy { get; set; } 

Как вы можете видеть выше, я сделал это на правильном пути как документация ORMLite: https://github.com/ServiceStack/ServiceStack.OrmLite

Это не загрузка свойств: ModifieldBy и CreatedBy, даже если свойства ModifiedById и CreatedById имеют значения. Я пробовал с обязательными полями, и это сработало, но когда я пытаюсь использовать int? nulable он не работает.

Вы можете видеть на картинке ниже, что у меня есть одна запись со значением «5» в столбце ModifiedById, поэтому мои Loadreferences моего метода должны получить столбец: ModifiedBy (с объектом Employee загружен), он работает в других случаях , не в этом дело. enter image description here

+0

Я [добавлен тестом, который показывает несколько ссылок самостоятельно с обнуляемым Интс рабочими] (HTTPS : //github.com/ServiceStack/ServiceStack.OrmLite/commit/388b8c213e4151a47a2057fcd04667e1f3b941e8), можете ли вы обновить до последней версии ServiceStack, если это еще не сделано, вы также можете попробовать [предварительную версию ServiceStack на MyGet] (https: //github.com/ServiceStack/ServiceSt извед/вики/MyGet). Если это все еще проблема, вы можете опубликовать автономный тест с ошибкой, например. в новом репо GitHub или в сущности, thx. – mythz

ответ

2

Я добавил прохождение тест, который проверяет несколько ссылок Самостоятельных с обнуляемым int? Ids in this commit:

используемый типов:

public class ParentSelfRef 
{ 
    [AutoIncrement] 
    public int Id { get; set; } 

    [References(typeof(ChildSelfRef))] 
    public int? Child1Id { get; set; } 

    [Reference] 
    public ChildSelfRef Child1 { get; set; } 

    [References(typeof(ChildSelfRef))] 
    public int? Child2Id { get; set; } 

    [Reference] 
    public ChildSelfRef Child2 { get; set; } 
} 

public class ChildSelfRef 
{ 
    [AutoIncrement] 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 

падение и воссоздавать таблицы:

db.DropTable<ParentSelfRef>(); 
db.DropTable<ChildSelfRef>(); 

db.CreateTable<ChildSelfRef>(); 
db.CreateTable<ParentSelfRef>(); 

Создать запись с несколькими ссылками на себя:

var row = new ParentSelfRef 
{ 
    Child1 = new ChildSelfRef 
    { 
     Name = "Child 1" 
    }, 
    Child2 = new ChildSelfRef 
    { 
     Name = "Child 2" 
    }, 
}; 

Сохранить и тест заселен ряд:

db.Save(row, references: true); 

row.PrintDump(); 

Assert.That(row.Id, Is.EqualTo(1)); 
Assert.That(row.Child1Id, Is.EqualTo(1)); 
Assert.That(row.Child1.Id, Is.EqualTo(1)); 
Assert.That(row.Child1.Name, Is.EqualTo("Child 1")); 
Assert.That(row.Child2Id, Is.EqualTo(2)); 
Assert.That(row.Child2.Id, Is.EqualTo(2)); 
Assert.That(row.Child2.Name, Is.EqualTo("Child 2")); 

нагрузки строка с самостоятельной ссылкой:

row = db.LoadSingleById<ParentSelfRef>(row.Id); 

Assert.That(row.Id, Is.EqualTo(1)); 
Assert.That(row.Child1Id, Is.EqualTo(1)); 
Assert.That(row.Child1.Id, Is.EqualTo(1)); 
Assert.That(row.Child1.Name, Is.EqualTo("Child 1")); 
Assert.That(row.Child2Id, Is.EqualTo(2)); 
Assert.That(row.Child2.Id, Is.EqualTo(2)); 
Assert.That(row.Child2.Name, Is.EqualTo("Child 2")); 
Смежные вопросы