我还没有看到有人提出过这样的问题。因此,我为 EF fluent api 开发人员和 nopcommerce 插件开发人员创建了一个。
这是我正在尝试做的事情:
我有一个产品实体,EF 可以使用它来生成数据库。我想在不修改原始类的情况下扩展产品实体。所以,我一直在尝试使用部分类。这里的代码看起来像:
namespace Nop.Core.Domain.Catalog
{
/// <summary>
/// Represents a product
/// </summary>
public partial class Product : BaseEntity, ILocalizedEntity, ISlugSupported, IAclSupported, IStoreMappingSupported
{
//some fields here.
public int ProductTypeId { get; set; }
//.....
}
}
现在,当我像这样扩展类时:
namespace Nop.Core.Domain.Catalog
{
public partial class Product : BaseEntity
{
public int RestaurantId { get; set; }
public virtual Restaurant BelongRestaurant { get; set; }
}
}
它会抛出一个错误。
“Nop.Core.Domain.Catalog.Product”类型和“Nop.Core.Domain.Catalog.Product”类型都具有相同的简单名称“Product”,因此不能在同一模型中使用。给定模型中的所有类型都必须具有唯一的简单名称。在 Code First fluent API 中使用“NotMappedAttribute”或调用 Ignore 以从模型中显式排除属性或类型。
这是我的映射文件的样子:
namespace Nop.Plugin.Misc.Plugin
{
public partial class ProductMap : EntityTypeConfiguration<Nop.Core.Domain.Catalog.Product>
{
public ProductMap()
{
//Table
this.ToTable(Settings.DATABASE_TABLE_NAME);
//Primary Key
this.HasKey(t => t.Id);
//Property
this.Property(t => t.Id)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
this.HasRequired(p => p.BelongRestaurant)
.WithMany(r => r.Menu)
.HasForeignKey(p => p.RestaurantId)
.WillCascadeOnDelete(false);
}
}
}
有人可以帮忙吗?