开发者

MVC 3 using code first (scaffolding does not work)

When I created the views using the scaffolding, one of my properties does was not present on the generated views. That property should act as my LOV (like the category property of the prod) ..see link http://weblogs.asp.net/scottgu/archive/2011/05/05/ef-code-first-and-data-scaffolding-with-the-asp-net-mvc-3-tools-update.aspx

Heres my entities.

public  class Member
{

    public string ID { get; set; }
    public string Name { get; set; }
    public System.DateTime DateApplied { get; set; }
    public System.DateTime? DateMembered { get; set; }
}

public class MemberType
{

    public string ID { get; set; }
    public string Description { get; set; }

}

public class BIMember : Member
{

    public new string ID { get; set; }
    [DisplayName("Name/Business Name")]
    public new string Name { get; set; }
    public virtual BIMemberType MemberType { get; set; }
}

public class BIMemberType : MemberType
{

    public new string ID { get; set; }
    public virtual ICollection<BIMember> Members { get; set; }
}

Table mapping..

public class MapMember : EntityTypeConfiguration<BIMember>
{

    public MapMember()
        : base()
    {
        HasKey(b => b.ID).Property(b => b.ID).HasColumnName ("ID");
        Property(b => b.Name).HasColumnName ("NAME");
        Property(b => b.DateApplied).HasColumnName("DTM_APPLIED");
        Property(b => b.DateMembered).HasColumnName("DTM_MEMBERED");

        HasRequired(b=>b.MemberType)
            .WithMany(p=>p.Members)
            .Map(b => b.MapKey("TYPE_ID"));
        ToTable("MBR");

    }
}

public class MapMemberType : EntityTypeConfiguration<BIMemberType>
{

    public MapMemberType()
        : base()
    {
        HasKey(p => p.ID).Property(p => p.ID).HasColumnName("ID");
        Property(p => p.ID).HasColumnName("ID");
        Property(p => p.Description).HasColumnName("DESCRIPTION");

        ToTable("MBR_TYPE");

    }
}

and my dbcontext..

public class ManagerContext : DbContext
{
    public 开发者_开发问答DbSet<BIMember> Members  { get; set; }
    public DbSet<BIMemberType> MemberTypes { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Configurations.Add(new MapMemberType());
        modelBuilder.Configurations.Add(new MapMember());
        base.OnModelCreating(modelBuilder);
    }
}

The property Im talking about is the BIMemberType property of Member entity.

That property does not appear in my view, but if I will add it manually, that property will work.

Furthermore, that property should appear like a drop down list on my create or edit view.

Thanks in advance.


For some who might encounter this thing..

Heres how I make it worked.

change this code from

HasRequired(b=>b.MemberType)
 .WithRequiredDependent()
 .Map(b =>  b.MapKey("TYPE_ID"));

to this one

Property(b => b.MemberTypeID).HasColumnName("TYPE_ID");
        HasRequired(a => a.MemberType)
            .WithMany()
            .HasForeignKey(u => u.MemberTypeID);

in the MapMember class.

and added a property at Member class

public string MemberTypeID { get; set; }

Thanks

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜