任何人都可以解释一下nopcommerce对其实体使用DbSet
的方式吗?
我想知道NopObjectContext
如何知道连接字符串中提供的数据库中的表。
我的理解是,在Code中,对于一个继承自DbContext
的类,每个实体都必须有getter和setter DbSet。
但是我在NopObjectContext
中没有看到这一点。我使用的是2.6版,其中使用了Code First。
答案 0 :(得分:1)
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下定义。它的所有属性都将映射到表中。您需要在此处添加的唯一部分是要使用的表,要忽略的属性,关系以及字段的属性(字符串长度或精度)。