OrmLite를 사용하여 POCO의 일부 열을 채우는 데 어려움이 있습니다. 나는 Dog, Bowl, DogBowl이라는 세 개의 테이블을 가지고 있습니다. DogBowl은 교차점 테이블이며 Dog and Bowl의 ID를 보유하고 있습니다.OrmLite 조인 된 테이블간에 여러 열 선택
Dogs
PK Id: int, not null
Breed: varchar(20), not null
Name: varchar(20), not null
Bowls
PK Id: int, not null
Type: varchar(20), not null
Color: varchar(20), not null
Dogs_Bowls
PK: DogId, not null
PK: BowlId, not null
는 여기에 내가 이것은 내가 실행 해요 C# 코드입니다
public class Dog : IHasId<int>
{
[AutoIncrement]
public int Id { get; set; }
[Required]
public string Breed { get; set; }
[Required]
public string Name { get; set; }
}
public class Bowl : IHasId<int>
{
[AutoIncrement]
public int Id { get; set; }
[Required]
public string Type { get; set; }
[Required]
public string Color { get; set; }
}
public class DogBowl
{
[Required]
public int DogId { get; set; }
[Required]
public int BowlId { get; set; }
[Ignore]
public string DogName { get;set; }
[Ignore]
public string BowlColor { get;set; }
}
를 매핑 한 포항 강판이다.
var dogBowl = db.Select<DogBowl>(db
.From<Dog>()
.Join<Dog, DogBowl>((d, db) => d.Id == db.DogId)
.Join<DogBowl, Bowl>((db, b) => db.BowlId == b.Id)
.Where<Dog>(d => d.Id == 5))
.ToList();
내가 생산하길 원하는 SQL은 이것이다 :
select
db.DogId,
db.BowlId,
d.Name AS DogName,
b.Color as BowlColor
from DogBowl db
join dog d on db.DogId = d.Id
join bowl b on db.BowlId = b.Id
where d.Id = 5
내 문제는 코드가 실행 후 DogBowl.DogName 및 DogBowl.BowlColor 속성이 null 있다는 것입니다. "연결된 테이블에서 여러 열 선택"섹션의 https://github.com/ServiceStack/ServiceStack.OrmLite에 제공된 지침을 사용하고 있지만 작동하지 않습니다. DogBowl.DogName 및 DogBowl.BowlColor 속성을 채우려면 어떻게합니까?
OK : 지금 가진 인구가 결과 집합을 반환
합니다. 나는 DogBowl poco를 재사용하여 다른 수업을 만들 필요가 없어졌습니다. 이제 Ignore 속성은 poco를 사용하여 필드 채우기를 완전히 무시합니다. DogId와 BowlId를 보유하기 위해 DogBowlJococo에 DogBowl poco의 이름을 바꾼 다음 DogId, BowlId, DogName 및 BowlColor 속성을 보유하는 DogBowl이라는 새로운 poco를 만들었습니다. – Halcyon