Questions tagged «domain-driven-design»

域驱动设计(DDD)是一种通过将实现与核心业务概念的不断发展的模型紧密地联系在一起来开发满足复杂需求的软件的方法。请注意,最好在softwareengineering.stackexchange.com上询问概念性DDD问题。

3
实体框架核心中的强类型ID
我正在尝试创建一个强类型的Id类,该类现在在内部保持“ long”。实施如下。我在实体中使用此控件时遇到的问题是,实体框架向我发送一条消息,指出属性ID已映射到其上。请参阅IEntityTypeConfiguration下面的内容。 注意:我的目标不是严格的DDD实现。因此,在评论或回答时请记住这一点。键入后的整个id Id是供开发人员进入的项目,他们被强烈键入要在其所有实体中使用Id,当然可以转换为long(或BIGINT)-但对于其他人则很清楚。 在类和配置下面,这不起作用。可以在https://github.com/KodeFoxx/Kf.CleanArchitectureTemplate.NetCore31中找到该存储库, Id上的课程(现在已注释掉):https : //github.com/KodeFoxx/Kf.CleanArchitectureTemplate.NetCore31/blob/master/Source/Common/Kf.CANetCore31/DomainDrivenDesign/Id.cs Entity和ValueObject类(Entity属性Id的类型为Id.cs(在上面):https : //github.com/KodeFoxx/Kf.CleanArchitectureTemplate.NetCore31/tree/master/Source/Common/Kf.CANetCore31/DomainDrivenDesign 可在以下位置进行配置:https : //github.com/KodeFoxx/Kf.CleanArchitectureTemplate.NetCore31/tree/master/Source/Infrastructure/Persistence/Kf.CANetCore31.Infrastructure.Persistence.Ef/EntityTypeConfigurations Id类实现(现在标记为过时,因为在找到解决方案之前我放弃了这个想法) namespace Kf.CANetCore31.DomainDrivenDesign { [DebuggerDisplay("{DebuggerDisplayString,nq}")] [Obsolete] public sealed class Id : ValueObject { public static implicit operator Id(long value) => new Id(value); public static implicit operator long(Id value) => value.Value; public static implicit operator Id(ulong value) …

3
将同一实体映射到不同的表
一点领域知识 我正在写一个POS(销售点)软件,该软件可以付款或退款。付款或退款时,需要指定使用哪种汇款方式:现金,EFT(〜=信用卡),会员卡,代金券等。 这些汇款方式是一组有限的已知值(一种枚举)。 棘手的是,我需要能够在POS终端上存储这些方式的自定义子集,以用于付款和退款(两组可能不同)。 例如: 可用付款方式:现金,电子转帐,会员卡,优惠券 可用退款方式:现金,代金券 实施现状 我选择实施汇款的概念意味如下: public abstract class MoneyTransferMean : AggregateRoot { public static readonly MoneyTransferMean Cash = new CashMoneyTransferMean(); public static readonly MoneyTransferMean EFT = new EFTMoneyTransferMean(); // and so on... //abstract method public class CashMoneyTransferMean : MoneyTransferMean { //impl of abstract method } public …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.