我一直在研究洋葱建筑学几天.我知道依赖关系应始终走向中心,以及如何使用依赖注入来实现这一目标.但我还有几个问题我仍然无法弄清楚.
模型(或实体)可以引用存储库接口或服务接口吗?
例如:Order实体具有DeliveryCity通过Oder.DeliveryZip属性建立的关系,该关系不是外键,而是唯一的.要获得拉链的城市,我必须打电话ICityRepository.FindByZip(zip)
我的模型中有以下代码
class Order
{
. . .
[Inject]
public ICityRepository CityRepository { get; set; }
private City _dCity;
public City DeliveryCity {
get {
if (_dCity == null)
_dCity = this.CityRepository.FindByZip(this.DeliveryZip);
return _dCity;
}
}
. . .
}
Run Code Online (Sandbox Code Playgroud)上述代码会出现什么问题?它应该使用域名服务吗?
域服务实现应该在核心内部还是在基础架构层中定义?
.net domain-driven-design ddd-repositories onion-architecture ddd-service
我正在实现内部网站点的访问控制.如果公司没有200多名员工并且几乎每个人都拥有自定义权限,这将很容易.我知道,这很疯狂,但我无法改变它.
所以,我试图找到一个满足我需求的通用实现,但找不到它,所以我自己去做.最后,我提出了一个相当通用的解决方案让我思考:有人必须在此之前完成它!
我称之为STOP(主题任务对象权限)访问控制.我有以下关系:
.-------. .-----------. .-------.
| users |1---*| STOPRules |*---1| tasks |
`-------' '-----------' '-------'
Run Code Online (Sandbox Code Playgroud)
STOP规则具有以下属性
STOPRule {
Subject;
Task;
ObjectType;
Permission;
Relation;
}
Run Code Online (Sandbox Code Playgroud)
对象关系可以是:owner,creator,revisor等.此字段不是必需的,以支持通用任务.当它在那里时,当前用户和对象实例之间的关系由委托计算.然后将当前关系与规则上的所需关系进行比较,以允许或拒绝访问.
如果我不够清楚,请告诉我.
出现两个问题:
有像这样的开源实现吗?
你看到我在这条路上会遇到什么问题吗?
编辑:我继续前进,实际上开始实施这个模型.第一个问题是我需要主题和对象之间的关系来支持任何用例.现在,我可以存储以下规则:
John(主题)可以(许可)编辑(任务)订单(对象),如果他是订单的创建者(关系).
那么,你们能提供一个无法用这个模型表达的真实用例吗?
使用tsc命令就像运行一样简单:
tsc --out all.js js/*.ts
Run Code Online (Sandbox Code Playgroud)
在构建项目时,如何配置Visual Studio来执行此操作?
注意:在SO上还有其他与此相关的问题,但没有一个真正为我解答.我并不担心服务器端,因为有很多方法可以处理保存相关的模型信息(以及如何执行此操作的大量示例).
我需要知道的是:如何在创建父模型时实现视图代码以添加许多子模型?
肯定会出现在本页面上看到的内容:http://www.yiiframework.com/doc/guide/1.1/en/form.table.除了代码处理一堆模型的更新,而不是插入它们.这就是我需要的.
简而言之,我有一个事件表单,用户可以在其中添加许多约会(每个约会都有一天,start_time和end_time).我想使用Yii帮助器在事件表单中呈现约会字段,以便获得验证和其他框架优势.
在创建事件时,用户将能够为同一事件添加多个约会.
有谁知道如何设置插入触发器,这样当从我的应用程序执行插入时,数据会被插入并且postgres返回,甚至在触发器完成执行之前?
.net ×1
architecture ×1
ddd-service ×1
php ×1
postgresql ×1
triggers ×1
tsc ×1
typescript ×1
yii ×1