【NPoco】一对多查询操作

版权声明:版权所有,需要请联系作者 https://blog.csdn.net/weixin_42930928/article/details/83587218

ORM库:NPoco

GitHub:https://github.com/schotime/NPoco

我Fork了一份在gitee:https://gitee.com/sesametech-group/NPoco

今天介绍实现一个一对多的关联查询功能

首先添加数据库表格:

CREATE TABLE `one` (
	`OneId` INT(11) NOT NULL AUTO_INCREMENT,
	`Name` VARCHAR(50) NULL DEFAULT NULL,
	PRIMARY KEY (`OneId`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=4
;
CREATE TABLE `many` (
	`ManyId` INT(11) NOT NULL AUTO_INCREMENT,
	`OneId` INT(11) NULL DEFAULT NULL,
	`Value` INT(11) NULL DEFAULT NULL,
	`Currency` VARCHAR(50) NULL DEFAULT NULL,
	PRIMARY KEY (`ManyId`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=6
;

建立实体类:

    [TableName("One"),PrimaryKey("OneId")]
    public class One
    {
        public int OneId { get; set; }
        public string Name { get; set; }
        [ResultColumn,ComplexMapping]
        public NestedClass Nested { get; set; }
        [Reference(ReferenceType.Many,ColumnName = "OneId",ReferenceMemberName = "OneId")]
        public ListMany Items { get; set; }
    }

    public class NestedClass
    {
        public string Name { get; set; }
    }

    public class ListMany : List<Many>
    {

    }

    [TableName("Many"),PrimaryKey("ManyId")]
    public class Many
    {
        public int ManyId { get; set; }
        [Reference(ReferenceType.OneToOne,ColumnName = "OneId",ReferenceMemberName = "OneId")]
        public One One { get; set; }

        public int OneId { get; set; }
        public int Value { get; set; }
        public string Currency { get; set; }
    }

在 One 类中新添加了一个属性:Nested,类型为CLASS,并在类中添加了类型为ListMany的Items属性。

通过如下的语句实现一对多查询:

第一行代码:实现了一对多查询,但是属性Nested没有值

第二行代码:实现了一对多查询,并在sql中添加了地段:nested__name,并把常量“MyName“赋给了nested__name

var ones = database.FetchOneToMany<One>(x => x.Items, @"select o.*, m.* from ONE o left join many m on o.oneid = m.oneid");
var x2= database.FetchOneToMany<One>(x => x.Items,
                "select o.*, 'MyName' nested__name, null npoco_items, m.* from ONE o left join many m on o.oneid = m.oneid");

一、 第一个查询结果

1.1 数据库根据语句查询结果

1.2 程序通过监视器可以看到其中的结果如下图所示:

二、第二个查询结果

2.1 数据库根据语句查询结果

2.2 通过监视器可以看到其中的结果如下图所示:

根据一和二可以看到,查询到了我们想要的结果 


 

猜你喜欢

转载自blog.csdn.net/weixin_42930928/article/details/83587218
今日推荐