gpt4 book ai didi

c# - 什么 .NET 数据模型可以让我忘记 ID?

转载 作者:搜寻专家 更新时间:2023-10-30 21:41:53 24 4
gpt4 key购买 nike

我想利用 .NET 的数据框架,但我对它们的工作方式有点困惑,而且我不确定我想要的东西是否可行。 (我已经用 PHP 框架做了很多这样的事情,所以我希望 .NET 也能做同样的事情!)简而言之,我希望我的业务逻辑与数据库无关,并且在某种意义上与以下事实无关:它根本就是一个数据库。

像这样的查询让我很恼火:

var productNames =
from p in context.Products
where seller.SellerID == mySeller.SellerID
select p.Name;

相反,我想这样做:

var productNames =
from p in context.Products
where seller == mySeller
select p.Name;

本质上,我希望我的业务逻辑不关心 ID 映射。部分原因是,在一些表中,ID 具有实际意义。 (我正在使用的一些表是从另一个应用程序域导入的,我需要能够直接使用这些 ID,但对于我自己的类型,ID 是偶然的。)

这是示例中的一个小问题,但总的来说,我希望能够完全在对象的世界中工作,或多或少地忘记底层数据库的实际情况。这只是为我的类定义等价运算符的问题吗?

总而言之:哪种 .NET 数据框架为我提供了对对象世界最清晰的数据库抽象?

最佳答案

如果产品和卖家之间存在关系(我不知道您的代码示例中的卖家是什么),那么 EF 让您执行 p.Seller(如果每个产品可以有多个卖家,则为 p.Sellers)。

但这似乎对你想做的事情没有帮助。 seller == mySeller 一点都不清楚。什么决定平等?通常,您有一个主键来建立相等性。因此比较 ID 仍然有意义。此外,它通常也更加高效。

另一种选择是重载 == 运算符。这允许您编写一个比较 ID 的方法,这对运算符(operator)的用户是不可见的。但是,这在您的查询中可能有效,也可能无效,因为它无法转换为 SQL。

关于c# - 什么 .NET 数据模型可以让我忘记 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10435534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com