首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NPoco fetchOneToMany误差

NPoco fetchOneToMany误差
EN

Stack Overflow用户
提问于 2014-08-05 22:15:04
回答 2查看 900关注 0票数 1

我试图使用NPoco的fetchOneToMany方法将一个对象映射为一个嵌套对象列表,如下所示的此链接

代码语言:javascript
复制
[TableName("sds_ingredients_ing")]
[PrimaryKey("ing_id")]
public class Ingredient
{
    [Column(Name = "ing_id")]
    public int Id { get; set; }
    [Column(Name = "ing_cas")]
    public string Cas { get; set; }
    [Ignore]
    public IList<IngredientLang> Ingredient_Lang;
}

[TableName("sds_ingredients_lang")]
[PrimaryKey("ing_id")]
public class IngredientLang
{
    [Column(Name = "ing_id")]
    public int Id { get; set; }
    [Column(Name = "lang_id")]
    public int LangId { get; set; }
    [Column(Name = "Name")]
    public string Name { get; set; }
}

下面是一个查询:

代码语言:javascript
复制
List<Ingredient> list = db.FetchOneToMany<Ingredient, IngredientLang>(x => x.Id,
    @"SELECT     ing.*, 
                 lang.*
      FROM       SDS_INGREDIENTS_ING ing 
      LEFT JOIN  SDS_INGREDIENTS_LANG lang 
      ON         ing.ING_ID=lang.ING_ID");

Npoco返回以下错误:在IList类型的对象上找不到ICollection`1‘1类型的属性,这让我感到困惑,因为类成分确实具有类型为IList的属性。我们已经尝试过List、IList、IEnumerable以及我们能想到的几乎每一种类型的集合,但它们都没有起作用。

你知道可能出了什么问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-06 12:30:35

Ingredient_Lang不是一个属性。这是个领域。如果你让它成为一种财产,它应该能工作。

票数 2
EN

Stack Overflow用户

发布于 2016-05-05 17:27:01

代码语言:javascript
复制
 public partial class Graph
 {
    [Reference(ReferenceType.Many, ColumnName = "GraphId", 
     ReferenceMemberName = "GraphId")]
    [Column] public List<Plot> Plots { get; set; }
...
[TableName("Graph")]
[PrimaryKey("GraphId")]
[ExplicitColumns]
public partial class Graph : fooDB.Record<Graph>  
{   
...

在遍历了NPoco 3.2.0的源代码之后,我了解到在调用FetchOneToMany之后,需要将列放在List成员上,以便在类中引出预期的子父级:

代码语言:javascript
复制
results = tdb.FetchOneToMany<Graph>(g => g.Plots, _plotsByReview, reviewId);

此外,在父列之后,选择列与子列保持连续:

代码语言:javascript
复制
private static string _plotsByReview = @"
        select 
        g.GraphId,
        g.GraphName,
        g.UserId,
        g.Shared,
        g.ReviewId,
        p.PlotId as Plots__PlotId,
        p.GraphId as Plots__GraphId,
        p.TagId as Plots__TagId,
        p.YAxis as Plots__YAxis,
        p.Relabel as Plots__Relabel,
        p.Scale as Plots__Scale,
        p.MinY as Plots__MinY,
        p.MaxY as Plots__MaxY
        from [Graph] g
        inner join [Plot] p on p.GraphId = g.GraphId
        where g.ReviewId = @0
    ";

NPoco规则!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25149238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档