如何将主项目中的属性添加到域项目的
OrderItem
?我尝试直接在主项目中添加 CS 文件,但是迁移给了我一个错误:
属性“OrderItem.Order”上的 [InverseProperty] 属性不是 有效。
属性 OrderItems 不是相关类型上的有效导航 命令。确保该属性存在并且是有效的引用或 收藏导航。
详情如下:
在 Domain 项目中,我有一个名为
OrderItem
的类。我想将主项目中的一些属性添加到 OrderItem
,如以下屏幕截图所示:
Domain项目的
OrderItem
类中的代码是:
namespace Domain.Orders;
[Table("Table_34")]
public partial class OrderItem : BaseEntity
{
[Column("Field_09")]
public ProductType ProductType { get; set; }
[Column("Field_10", TypeName = "decimal(18, 0)")]
public decimal Price { get; set; }
[Column("Field_11")]
public long ProductItemId { get; set; }
[Column("Field_12", TypeName = "decimal(18, 0)")]
public decimal Discount { get; set; }
[Column("Field_13", TypeName = "decimal(18, 0)")]
public decimal Tax { get; set; }
[Column("Field_14")]
[ForeignKey("Field_14")]
public long OrderId { get; set; }
[Column("Field_15")]
public int Count { get; set; }
[Column("Field_16", TypeName = "datetime")]
public DateTime? StartDate { get; set; }
[Column("Field_17")]
public long? Time { get; set; }
[InverseProperty("OrderItems")]
public virtual Order Order { get; set; }
}
在主项目中,我有另一个名为
OrderItem
的部分类,如下所示:
namespace Domain.Orders;
public partial class OrderItem
{
[InverseProperty("OrderItem")]
public License License { get; set; }
[InverseProperty("OrderItem")]
public RequestLicense RequestLicense { get; set; }
}
部分类用于定义类的单独部分在同一程序集中。
如果
License
和 RequestLicense
确实是您的域的一部分,那么这些属性应该存在于您的域项目中的 OrderItem
本身。
但是,如果您打算在不同的上下文中使用 OrderItem,并且
License
和 RequestLicense
的概念是仅适用于某些上下文的附加属性,那么您可能需要单独存储它们。
DDD 方法是拥有两个微服务(每个微服务都有自己的 DbContext 和迁移):
Order
、OrderItem
和OrderComment
。该服务将用于管理核心订单详细信息。License
和 RequestLicense
此服务将用于管理订单项目的许可。在 Licensing 服务中,您将存储相关 OrderItems 的 ID(以及 Licensing 完成其工作所需的任何 OrderItem 属性的副本)。