Nopcommmerce表生成

时间:2012-11-25 14:12:46

标签: ef-code-first nopcommerce

任何人都可以解释一下nopcommerce对其实体使用DbSet的方式吗?

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

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

但是我在NopObjectContext中没有看到这一点。我使用的是2.6版,其中使用了Code First。

1 个答案:

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