1

谁能解释一下 nopcommerce 如何DbSet用于其实体?

我想知道如何NopObjectContext知道连接字符串中提供的数据库中的表。

我的理解是,在 Code first 中,对于继承自 的类,DbContext每个实体都必须有 getter 和 setter DbSet。

但是我在NopObjectContext. 我正在使用使用 Code First 的 2.6 版。

4

1 回答 1

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 下定义。它的所有属性都将映射到表。您需要在此处添加的唯一部分是要使用的表、要忽略的属性、关系和字段的属性(字符串长度或精度)。

于 2012-12-13T13:29:08.637 回答