Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于数据访问的简化API_C#_Design Patterns_Data Access Layer - Fatal编程技术网

C# 用于数据访问的简化API

C# 用于数据访问的简化API,c#,design-patterns,data-access-layer,C#,Design Patterns,Data Access Layer,我们希望创建一个API,它将封装我们的模型和存储库之间的所有内部交互,并提供一种在系统中添加和更新实体的简单方法 我希望该API的消费者能够: SystemOder order = SomeClass.GetSystemOrderById("..."); order.amount = 200; order.InvoiceAddress[0].StreetName = "123 Fake Street"; order.Save(); 现在在幕后,我们仍然是一个从模型到存储库的体系结构,但对于编写

我们希望创建一个API,它将封装我们的模型和存储库之间的所有内部交互,并提供一种在系统中添加和更新实体的简单方法

我希望该API的消费者能够:

SystemOder order = SomeClass.GetSystemOrderById("...");
order.amount = 200;
order.InvoiceAddress[0].StreetName = "123 Fake Street";
order.Save();
现在在幕后,我们仍然是一个从模型到存储库的体系结构,但对于编写纯业务逻辑来说,这将位于其之上,并向最终消费者隐藏它。这种架构有没有合适的模式


为了澄清这一点,我们显然不想将Save()方法烘焙到或核心域模型或类似的东西中,我们只希望有一个好的API来去除不必要的代码解析集合和调用存储库等。

听起来您正在寻找类似存储库模式的东西。(您在问题中提到了存储库,但我认为您正在使用该术语来代替数据存储?)

引用马丁·福勒的描述

使用用于访问域对象的类似集合的接口在域和数据映射层之间进行调解


可以找到更多信息

将推出我自己的facade模式,该模式将封装对象模型和Save()Delete等持久化机制,同时仍保持模型/DAL的良好分离。这是一种非常有用的东西,混合在一起……哦,好吧。

听起来你想要类似于工作单元设计模式的东西: