asp.net 在Ef 7迁移中使用分部类

nc1teljy  于 2023-11-20  发布在  .NET
关注(0)|答案(1)|浏览(124)

如何将属性从主项目添加到域项目的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; }
}

wecizke3

wecizke31#

分部类用于在同一个程序集中定义类的不同部分。
如果LicenseRequestLicense确实是Domain的一部分,那么这些属性应该存在于Domain项目中的OrderItem本身。
但是,如果您打算在不同的上下文中使用OrderItem,并且LicenseRequestLicense的概念是仅适用于某些上下文中的附加属性,那么您可能希望单独存储它们。
DDD的方式是有两个微服务(每个微服务都有自己的DbContext和迁移):
1.订单,包括OrderOrderItemOrderComment,用于管理核心订单明细。
1.许可,包括LicenseRequestLicense此服务将用于管理订单项目的许可。
Licensing服务中,您将存储相关OrderItem的ID(以及Licensing完成其工作所需的任何OrderItem属性的副本)。

相关问题