如何将属性从主项目添加到域项目的OrderItem
中?我尝试直接在主项目中添加CS文件,但迁移给我一个错误,
属性“OrderItem.Order”的[InverseProperty]特性无效。
OrderItems属性不是相关类型Order上的有效导航。请确保该属性存在并且是有效的引用或集合导航。
以下是详细信息:
在Domain项目中,我有一个名为OrderItem
的类。我想从Main项目中添加一些属性到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; }
}
字符串
在Main项目中,我有另一个名为OrderItem
的分部类,如下所示:
namespace Domain.Orders;
public partial class OrderItem
{
[InverseProperty("OrderItem")]
public License License { get; set; }
[InverseProperty("OrderItem")]
public RequestLicense RequestLicense { get; set; }
}
型
1条答案
按热度按时间wecizke31#
分部类用于在同一个程序集中定义类的不同部分。
如果
License
和RequestLicense
确实是Domain的一部分,那么这些属性应该存在于Domain项目中的OrderItem
本身。但是,如果您打算在不同的上下文中使用OrderItem,并且
License
和RequestLicense
的概念是仅适用于某些上下文中的附加属性,那么您可能希望单独存储它们。DDD的方式是有两个微服务(每个微服务都有自己的DbContext和迁移):
1.订单,包括
Order
、OrderItem
、OrderComment
,用于管理核心订单明细。1.许可,包括
License
和RequestLicense
此服务将用于管理订单项目的许可。在Licensing服务中,您将存储相关OrderItem的ID(以及Licensing完成其工作所需的任何OrderItem属性的副本)。