谁能解释一下 nopcommerce 如何DbSet
用于其实体?
我想知道如何NopObjectContext
知道连接字符串中提供的数据库中的表。
我的理解是,在 Code first 中,对于继承自 的类,DbContext
每个实体都必须有 getter 和 setter DbSet。
但是我在NopObjectContext
. 我正在使用使用 Code First 的 2.6 版。
谁能解释一下 nopcommerce 如何DbSet
用于其实体?
我想知道如何NopObjectContext
知道连接字符串中提供的数据库中的表。
我的理解是,在 Code first 中,对于继承自 的类,DbContext
每个实体都必须有 getter 和 setter DbSet。
但是我在NopObjectContext
. 我正在使用使用 Code First 的 2.6 版。
您在 Nop.Data.Mapping 中的类定义了表和属性。
public partial class CustomerMap : EntityTypeConfiguration<Customer>
{
public CustomerMap()
{
this.ToTable("Customer");
this.HasKey(c => c.Id);
this.Property(u => u.Username).HasMaxLength(1000);
this.Property(u => u.Email).HasMaxLength(1000);
this.Property(u => u.Password);
this.Property(c => c.AdminComment).IsMaxLength();
this.Property(c => c.CheckoutAttributes).IsMaxLength();
this.Property(c => c.GiftCardCouponCodes).IsMaxLength();
this.Ignore(u => u.PasswordFormat);
this.Ignore(c => c.TaxDisplayType);
this.Ignore(c => c.VatNumberStatus);
this.HasOptional(c => c.Language)
.WithMany()
.HasForeignKey(c => c.LanguageId).WillCascadeOnDelete(false);
this.HasOptional(c => c.Currency)
.WithMany()
.HasForeignKey(c => c.CurrencyId).WillCascadeOnDelete(false);
this.HasMany(c => c.CustomerRoles)
.WithMany()
.Map(m => m.ToTable("Customer_CustomerRole_Mapping"));
this.HasMany(c => c.DismissedAttributeNotices)
.WithMany()
.Map(m => m.ToTable("ProductAttribute_DismissedAttributeNotices"));
this.HasMany<Address>(c => c.Addresses)
.WithMany()
.Map(m => m.ToTable("CustomerAddresses"));
this.HasOptional<Address>(c => c.BillingAddress);
this.HasOptional<Address>(c => c.ShippingAddress);
this.HasOptional<Customer>(c => c.SelectedSalesRep);
}
}
客户在 Nop.Core.Domain.Customers.Customer.cs 下定义。它的所有属性都将映射到表。您需要在此处添加的唯一部分是要使用的表、要忽略的属性、关系和字段的属性(字符串长度或精度)。