首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用sqlkata查询复杂对象

使用sqlkata查询复杂对象
EN

Stack Overflow用户
提问于 2018-08-24 21:21:18
回答 3查看 2.2K关注 0票数 3

我不能用查询来构建一个复杂的对象。我是怎么做的?

代码语言:javascript
复制
public class Person
{
    public long Id { get; set; }
    public string Name { get; set; }
    public Contact Contact { get; set; }
}

public class Contact
{
    public long Id { get; set; }
    public string FoneNumber { get; set; }
}
EN

回答 3

Stack Overflow用户

发布于 2018-08-24 22:14:12

我的代码:

代码语言:javascript
复制
        var compiler = new SqlServerCompiler();
        var db = new QueryFactory(connection, compiler);

        var person = db.Query("Person")
                        .Select("Person.Id", "Person.Name", "Contact.Id", "Contact.FoneNumber")
                        .Join("Contact", "Person.Id", "Contact.PersonId")
                        .Where("Person.Id", 1)
                        .FirstOrDefault<Person>();
票数 1
EN

Stack Overflow用户

发布于 2018-08-27 21:13:09

正如您之前所写的,使用Join方法连接"Contact“表,

代码语言:javascript
复制
var row = db.Query("Person")
            .Select(
                "Person.Id",
                "Person.Name",
                "Contact.Id as ContactId",
                "Contact.FoneNumber as FoneNumber"
            )
            .Join("Contact", "Person.Id", "Contact.PersonId")
            .Where("Person.Id", 1)
            .FirstOrDefault();
票数 1
EN

Stack Overflow用户

发布于 2018-08-24 22:01:28

您可以使用Dapper的Multi-Mapping功能。

代码语言:javascript
复制
    [Test]
    public void Test_Multi_Mapping()
    {
        using (var conn = new SqlConnection(@"Data Source=.\sqlexpress; Integrated Security=true; Initial Catalog=test"))
        {
            var result = conn.Query<Person, Contact, Person>(
                "select Id = 1, Name = 'Jane Doe', Id = 2, FoneNumber = '800-123-4567'",
                (person, contact) => { person.Contact = contact;
                    return person;
                }).First();

            Assert.That(result.Contact.FoneNumber, Is.EqualTo("800-123-4567"));
        }
    }

您也可以使用".QueryMultiple“。请阅读Dapper的文档,或查看unit tests以获取更多示例。

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

https://stackoverflow.com/questions/52005428

复制
相关文章

相似问题

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