我正在使用Dapper使用Unit或Work and Repository构建ORM。我已经在互联网上搜索过这个问题但没有运气。
我有以下表格:
如您所见,Instance内部有实体。我有两种方法:
方法1:
public class Entity
{
public int Id {get;set;}
public string Name {get;set;}
}
public class Instance
{
public int Id {get;set;}
public Entity Entity {get;set;}
public string Name {get;set;}
}
如何通过这种方法获得Entity的价值?
方法2(根据this link):
public class Entity
{
public int Id {get;set;}
public string Name {get;set;}
}
public class Instance
{
public int Id {get;set;}
public int EntityId {get;set;}
public string Name {get;set;}
}
哪种设计更适合使用?
答案 0 :(得分:1)
如果要从两个不同的表中获取数据并将其填入两个不同的POCO类,则可以使用QueryMultiple
。以下内容是从here复制的:
string sql = "SELECT * FROM Invoice WHERE InvoiceID = @InvoiceID; SELECT * FROM InvoiceItem WHERE InvoiceID = @InvoiceID;";
using (var connection = My.ConnectionFactory())
{
connection.Open();
using (var multi = connection.QueryMultiple(sql, new {InvoiceID = 1}))
{
var invoice = multi.Read<Invoice>().First();
var invoiceItems = multi.Read<InvoiceItem>().ToList();
}
}
您可以使用此方法处理代码中提到的两种模型。
作为替代方法,您可以将两个POCO合并为一个,也可以使用继承。但是,看看你的数据模型,我认为这不适用于这种特殊情况。
哪种设计更适合使用?
由你决定。无论什么适合您的项目需要,保持不必要的复杂性对您有好处。