C# 将完整实体传递到存储库,还是只传递ID来删除它们?

C# 将完整实体传递到存储库,还是只传递ID来删除它们?,c#,repository,entity,data-access-layer,C#,Repository,Entity,Data Access Layer,我只是问自己,是否真的需要将整个SelectedCustomers列表传递给存储库的delete方法,如: _customerRepo.DeleteCustomers(SelectedCustomers); 只传递要删除的客户的Id不是更好吗 List<int> SelectedCustomerIDs = GetSelectedCustomersIDs(SelectedCustomers); _customerRepo.DeleteCustomers(SelectedCustome

我只是问自己,是否真的需要将整个SelectedCustomers列表传递给存储库的delete方法,如:

_customerRepo.DeleteCustomers(SelectedCustomers);
只传递要删除的客户的Id不是更好吗

List<int> SelectedCustomerIDs = GetSelectedCustomersIDs(SelectedCustomers);
_customerRepo.DeleteCustomers(SelectedCustomerIDs);
列出SelectedCustomerId=GetSelectedCustomerId(SelectedCustomers);
_customerRepo.DeleteCustomers(SelectedCustomerId);
我并没有使用一个ORMapper,它肯定只接受完整的实体来接受上下文中的更改或将其从上下文中删除

我使用sqlite,所以我认为传递int值列表比传递实体列表更快/更少Ram


您认为呢?

对象已经在内存中,您在将它们传递到存储库时不会复制它们,而只复制对它们的引用。因此,您不会节省内存(除非您的存储库位于不同的服务器上)


只要您在存储库中只是使用ID传递到数据库,您就可以了。

对象已经在内存中,并且在将它们传递到存储库时您不会复制它们,而只复制对它们的引用。因此,您不会节省内存(除非您的存储库位于不同的服务器上)


只要在您的存储库中您只是使用ID传递到数据库,您就不会有问题。

您的回答给了我一个很好的提示。如果我想以后升级到ORMapper框架,在我的IRepositories中使用非实体(如int value)作为参数是不好的,因为我必须重写所有接口。。。现在传递实体而不是int值为我准备实体框架。好的,我将通过整个实体:)你的回答给了我一个很好的提示。如果我想以后升级到ORMapper框架,在我的IRepositories中使用非实体(如int value)作为参数是不好的,因为我必须重写所有接口。。。现在传递实体而不是int值为我准备实体框架。好的,我将通过整个实体:)