在 Ef 7 迁移中使用部分类

问题描述 投票:0回答:1

如何将主项目中的属性添加到域项目的

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; }
}
asp.net asp.net-mvc asp.net-core entity-framework-core migration
1个回答
0
投票

部分类用于定义类的单独部分在同一程序集中

如果

License
RequestLicense
确实是您的域的一部分,那么这些属性应该存在于您的域项目中的
OrderItem
本身。

但是,如果您打算在不同的上下文中使用 OrderItem,并且

License
RequestLicense
的概念是仅适用于某些上下文的附加属性,那么您可能需要单独存储它们。

DDD 方法是拥有两个微服务(每个微服务都有自己的 DbContext 和迁移):

  1. 订单,包括
    Order
    OrderItem
    OrderComment
    。该服务将用于管理核心订单详细信息。
  2. 许可,包括
    License
    RequestLicense
    此服务将用于管理订单项目的许可。

Licensing 服务中,您将存储相关 OrderItems 的 ID(以及 Licensing 完成其工作所需的任何 OrderItem 属性的副本)。

© www.soinside.com 2019 - 2024. All rights reserved.