私はこのような質問が提起されたのを見たことがありません。そこで、EFの流暢な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」という同じ単純な名前を持っているため、同じモデルで使用することはできません。特定のモデルのすべてのタイプには、一意の単純な名前を付ける必要があります。'NotMappedAttribute'を使用するか、Code First fluent APIで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);
}
}
}
誰か助けてもらえますか?
partial class
は、1つのクラスに複数のファイルを含めることができる単なるシンタックスシュガーです。つまり、同じプロジェクトにいくつでも部分クラスを作成できます。
ただし、別のプロジェクトでクラスを使用する場合、たとえそれがであっても、その機能を拡張するpartial class
ために別のファイルを作成することはできませんpartial class
。
部分的なクラスとメソッドの詳細(C#プログラミングガイド)をお読みください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加