我不能用查询来构建一个复杂的对象。我是怎么做的?
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; }
}发布于 2018-08-24 22:14:12
我的代码:
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>();发布于 2018-08-27 21:13:09
正如您之前所写的,使用Join方法连接"Contact“表,
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();发布于 2018-08-24 22:01:28
您可以使用Dapper的Multi-Mapping功能。
[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以获取更多示例。
https://stackoverflow.com/questions/52005428
复制相似问题