【发布时间】:2018-01-17 13:51:10
【问题描述】:
我正在调查使用 ORM 来访问我们的 DataVault。到目前为止,PetaPoco 看起来最有前途,但我并不局限于那个。
我们识别的大多数对象都嵌入在 Hub 和 Sat 的组合中,其中 Hub 包含 BusinessKey,而 Sat 包含附加信息。在 poco 中,它看起来像这样(简化):
// hub: H_Client
// sat: HS_Client
class Client
{
public string ClientId_BK { get; set; } // BusinessKey in the Hub
public long H_Client_SeqId { get; set; } // PK/Identity in Hub, FK in the Sat
public string? Address { get; set; } // additional attr. in the Sat
public string? Phone { get; set; } // additional attr. in the Sat
/* and a lot more attributes */
}
因此,每当我们谈论客户时,它总是涉及到集线器与其周六的结合。 通常,ORM 一次连接一个表,但这对于数据保险库不是很有用:您总是希望查询或插入具有适用 Sat 的 Hub。
是否可以从一个 poco 更新或插入多个表?
【问题讨论】:
-
根据我的经验,Petapoco 在加入表格时简直就是地狱。我不清楚您的查询到底是什么样的。在 Petapoco 中,简单地分配或过滤外键是微不足道的。或者您的意思是您想在查询客户端时从 Sat 表中提取显示的地址和电话?
-
通常,您会选择或插入(当它不存在时)一条记录到 hub 表中,检索标识并在 sat 表中插入一条标识为 FK 的新记录。出于测试目的,我想用 poco 来做这件事,因为它们比原始查询更容易交互。
-
任何微 ORM 都不是真正的 ORM,但是无论有没有 ORM,我都会在数据库中创建一个正确命名的视图(sql)来隐藏所有连接然后查询它(作为表)
标签: c# sql-server petapoco micro-orm