私のポコスでは、1対多および多対多のSQL関係をリストにマッピングするのが難しいです。私はフェッチとクエリのすべてのやり方と属性を試してきました。ポコスを適切にマッピングできていません。ここではクラスとSQLの簡易版です:NPoco多対多多対多
POCOS:
[NPoco.TableName("Product")]
[NPoco.PrimaryKey("ProductId")]
public class Product
{
public int ProductId { get; set; }
public List<Category> Categories { get; set; }
public string Name { get; set; }
public List<ProductVariant> ProductVariants { get; set; }
}
[NPoco.TableName("Category")]
[NPoco.PrimaryKey("CategoryId")]
public class Category : ModifiedDomainObject
{
public int CategoryId { get; set; }
public string Name { get; set; }
}
[NPoco.TableName("ProductVariant")]
[NPoco.PrimaryKey("ProductVariantId")]
public class ProductVariant : ModifiedDomainObject
{
public int ProductVariantId { get; set; }
public string Name { get; set; }
}
SQLクエリ:
SELECT[Product].[ProductId],
[Product].[PublicId],
[Product].[Name],
[Category].[CategoryId],
[Category].[Name],
[ProductVariant]
[ProductVariantId],
[ProductVariant].[ProductId],
[ProductVariant].[Name],
FROM[Product]
JOIN[ProductCategory] on[ProductCategory].[ProductId] = [ProductCategory].[ProductId]
JOIN[Category] ON[ProductCategory].[CategoryId] = [Category].[CategoryId]
LEFT OUTER JOIN[ProductVariant] ON[Product].[ProductId] = [ProductVariant].[ProductId]
WHERE[Product].[ProductId] = 1
ORDER BY[Product].[ProductId],
[Category].[CategoryId],
[ProductVariant].[ProductVariantId];
ので、製品 - > ProductVariantはProductVariantで、1対多のですProductIdを搭載したテーブル。 Product-> CategoryはProductIdとCategoryIdを持つxrefテーブル[ProductCategory]を持つ多対多です。私が得た最も近いのは、ProductVariantリストに正しい数のオブジェクトが移入されていますが、値はProductデータからマップされています。
私はPetaPocoで長年働いており、NPoco V3に「アップグレード」しようとしています。 PetaPocoの場合、私はRelatorを使ってマッピングを行います。 NPocoを使用すると、オンラインの例は私のためには機能しません。
は私が正しいと信じている、あなたの答えをいただき、ありがとうございます。唯一の解決策は、PetaPocoから一歩後退しているように見えるN + 1の動作(100個の製品= 101 SQLクエリ)です。 – RobertMGlynn