有人可以通过提供一些示例来解释域和应用程序服务之间的区别吗?并且,如果服务是域服务,我是否会将此服务的实际实现放在域程序集中?如果是,我是否也会将存储库注入该域服务?一些信息会非常有用.
我正在寻找一种方法来为select语句的每个记录调用存储过程.
SELECT @SomeIds = (
SELECT spro.Id
FROM SomeTable as spro
INNER JOIN [Address] addr ON addr.Id = spro.Id
INNER JOIN City cty ON cty.CityId = addr.CityId
WHERE cty.CityId = @CityId
)
WHILE @SomeIds IS NOT NULL
BEGIN
EXEC UpdateComputedFullText @SomeIds
END
Run Code Online (Sandbox Code Playgroud)
上面这样的事情当然不起作用,但有没有办法做这样的事情?
如果我有一个Order类作为聚合根和1000个行项.
如何只加载1000个订单项中的一个?据我所知,订单项只能通过Order类访问,并具有"本地"标识.我还会在OrderRepository中创建一个像"GetLineItemById"的存储库方法吗?
编辑评论答案: 目前我不认为有一个不可变的孩子是合理的.如果我的Customer类包含多个地址,合同以及更多子集合,该怎么办?我想要执行CRUD方法的庞大实体.
我会
public class Customer
{
public IEnumerable<Address> Addresses { get; private set; }
public IEnumerable<Contracts> Contracts { get; private set; }
...
}
Run Code Online (Sandbox Code Playgroud)
如果用户纠正地址或合同财产的街道,我是否必须这样做?
public class Customer
{
public void SetStreetOfAddress(Address address, street){}
public void SetStreetNumberOfAddress(Address address, streetNumber){}
}
Run Code Online (Sandbox Code Playgroud)
然后,客户类将充满子操作方法.所以我宁愿这样做
addressInstance.Street = "someStreet";
Run Code Online (Sandbox Code Playgroud)
我想我误解了整个概念.. :)
.net nhibernate design-patterns domain-driven-design repository
我有以下数据库模型:
**Person table**
ID | Name | StateId
------------------------------
1 Joe 1
2 Peter 1
3 John 2
**State table**
ID | Desc
------------------------------
1 Working
2 Vacation
Run Code Online (Sandbox Code Playgroud)
和域模型将(简化):
public class Person
{
public int Id { get; }
public string Name { get; set; }
public State State { get; set; }
}
public class State
{
private int id;
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
状态可能在域逻辑中使用,例如:
if(person.State == State.Working)
// some logic
Run Code Online (Sandbox Code Playgroud)
因此,根据我的理解,State就像一个用于域逻辑检查的值对象.但它也需要存在于DB模型中以表示干净的ERM.
所以州可以扩展到:
public class …
Run Code Online (Sandbox Code Playgroud) 我创建了一个自定义的http模块,并希望将此模块添加到Web配置中.Web应用程序是一个包含多个"子应用程序"的项目.子应用程序只是一个文件夹,在该文件夹中它有自己的web.config.我这样做是因为每个应用程序都有自己的应用程序相关内容,样式表,配置等.
现在我创建了一个自定义的http模块.将此添加到根web.config时,模块正常工作.将http模块配置添加到目录级web.config(例如/Applications/MyApplication/web.config)时,模块不再被初始化.即使msdn声明HttpModules配置元素也在目录级别工作.谁知道如何解决这个问题?
我正在开发一个提供soap接口的系统.其中一个将要使用该接口的系统在Delphi 7中编码.Web服务是使用WCF,基本的http绑定,SOAP 1.1开发的.
如果我使用SOAP UI(JAVA),该服务正常工作.但德尔福似乎在这里做了特别的事情;)
这是SOAP UI中消息的样子:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://services.xxx.de/xxx">
<soapenv:Header/>
<soapenv:Body>
<ser:GetCustomer>
<!--Optional:-->
<ser:GetCustomerRequest> <!-- this is a data contract -->
<ser:Id>?</ser:Id>
</ser:GetCustomerRequest>
</ser:GetCustomer>
</soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)
我不是delphi开发人员,但我开发了一个简单的测试客户端,看看出了什么问题.这就是Delphi作为SOAP信封发送的内容.
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:NS2="http://services.xxx.de/xxx">
<NS1:GetCustomer xmlns:NS1="http://services.xxx.de/xxx">
<GetCustomerRequest href="#1"/>
</NS1:GetCustomer>
<NS2:GetCustomerRequest id="1" xsi:type="NS2:GetCustomerRequest">
<Id xsi:type="xsd:int">253</Id>
</NS2:GetCustomerRequest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Run Code Online (Sandbox Code Playgroud)
WCF抛出一个德语错误...;)
Es wurde das Endelement"Body"aus命名空间" http://schemas.xmlsoap.org/soap/envelope/"erwartet.Gefunden wurde"Element"NS2:GetCustomerRequest"aus Namespace" http://services.xxx.de/xxx "".Zeile 1,职位599.
意味着什么
身体是预期的.但是找到了元素"NS2:GetCustomerReques".
现在我的问题是:我可以以某种方式改变Delphi创建信封的方式吗?或者是使WCF使用这种消息格式的方法?任何帮助是极大的赞赏!
考虑以下简化示例:
public class Ticket
{
public int Id;
public TicketState State;
public Ticket()
{
// from where do I get the "New" state entity here? with its id and name
State = State.New;
}
public void Finished()
{
// from where do I get the "Finished" state entity here? with its id and name
State = State.Finished;
}
}
public class TicketState
{
public int Id;
public string Name;
}
Run Code Online (Sandbox Code Playgroud)
类状态直接在域对象票证中使用.在故障单生命周期的后期可能会设置其他状态.
故障单将持久保存到故障单表以及TicketState中.因此,在数据库中,票证将具有票证状态表的外键.
在我的实体中设置适当的状态时,如何从数据库加载状态实例?我是否必须将存储库注入实体?在这种情况下,我是否需要使用像城堡这样的框架?或者有更好的解决方案,可能从外面传递状态?
public class Ticket
{
//...
public ITicketStateRepository …
Run Code Online (Sandbox Code Playgroud) 我目前正在开发一个系统,它可以保存所有相关的主数据,例如客户,或者有关我们系统环境中存在的操作系统的信息.为这些实体分配的ID在企业中是唯一的.当某些系统存储例如客户相关数据时,它也必须保存客户的主数据ID.主数据系统基于.Net和MSSQL 2005.
现在我的问题是,当使用自己的程序集,数据库等开发另一个使用MDM系统数据的系统时,你会将这些数据冗余地存储在其他系统数据库中,创建自己的业务实体(如客户)和硬盘从其他数据库(或ETL)的MDM中编码所需的主数据?这样,另一个系统与MDM分离,但仅存储全局主数据ID.
或者您是否将MDM的程序集集成到其他系统(如果是.Net)并使用MDM的数据层来加载全局实体(如客户)?
或者您是否让其他系统创建自己的实体,但是为了检索主数据,您将使用MDM提供的SOAP接口.
我倾向于使用no方法.1因为我认为最好从MDM解决方案中分离其他系统(关注点分离).由于MDM解决方案可以保存客户实体的更多数据,而不是在需要客户名称的其他系统中所需的数据.选项3是可能的,但Web服务可能会减慢操作系统的速度.你怎么看?
我想知道在处理父母子女关系时,以下哪项被认为是最佳做法.
1)以下示例似乎是一种常见做法,但在创建子实例时,只要未添加到父级,它就处于无效状态.这不会导致验证等问题.
public class Parent
{
private ICollection<Child> children;
public ReadOnlyCollection Children { get; }
public void AddChild(Child child)
{
child.Parent = this;
children.Add(child);
}
}
public class Child
{
internal Parent Parent
{
get;
set;
}
public Child()
{
}
}
Run Code Online (Sandbox Code Playgroud)
2)下一个样本将注意孩子必须始终与其父母相关.
public class Parent
{
private ICollection<Child> children;
public ReadOnlyCollection Children { get; }
public Child CreateChild()
{
var child = new Child();
child.Parent = this;
children.Add(child);
return child;
}
}
public class Child
{
internal Parent Parent …
Run Code Online (Sandbox Code Playgroud) 我有一个关于通过规范模式实施业务规则的问题.请考虑以下示例:
public class Parent
{
private ICollection<Child> children;
public ReadOnlyCollection Children { get; }
public void AddChild(Child child)
{
child.Parent = this;
children.Add(child);
}
}
public class Child
{
internal Parent Parent
{
get;
set;
}
public DateTime ValidFrom;
public DateTime ValidTo;
public Child()
{
}
}
Run Code Online (Sandbox Code Playgroud)
业务规则应该强制在集合中不存在有效期与另一个相交的子节点.
为此,我想实现一个规范,如果添加了一个无效的子节点,则该规范用于抛出异常,并且在添加子节点之前也可以用于检查规则是否会被违反.
喜欢:
public class ChildValiditySpecification
{
bool IsSatisfiedBy(Child child)
{
return child.Parent.Children.Where(<validityIntersectsCondition here>).Count > 0;
}
}
Run Code Online (Sandbox Code Playgroud)
但在此示例中,子进程访问父进程.而对我来说似乎并不正确.当孩子尚未添加到父母时,该父母可能不存在.你会如何实现它?
.net ×8
c# ×6
java ×4
architecture ×2
asp.net ×1
delphi ×1
nhibernate ×1
oop ×1
repository ×1
soap ×1
sql ×1
sql-server ×1
t-sql ×1
wcf ×1