电子投标系统的EF代码模型在MVC4中

时间:2014-05-28 07:27:21

标签: c# entity-framework asp.net-mvc-4 model

建筑招标委员会应用程序在使用>>的模型结构方面遇到了一些困惑。 >>中的实体框架MVC4

这里的描述: 在我的简单会员角色表中,我有: 的(管理员,投标,提供程序,会员)

管理:他有权将正常用户角色从“会员”更改为“提供商并在投标机构批准后证明中标者。”

供应商:普通用户将被指定为“成员”,并由管理员激活为提供商,然后他们可以出价任何他们想要的项目。

招标组织用户创建的

项目:每个项目都有很多要求

要求:每个与项目相关的内容。

招标:这里我的问题实际上是招标是“国家的部委,必须在系统中设置”但每个部门显然有很多用户“经理,让每个人说5”谁将投票支持供应商。管理人员只能投票给同一部委下属的供应商。

我是否会错过其他桌子?

我真的不知道如何使用关系以及(UserprofileTbale和Role Table)构建所有表: 在这里,我试试,帮助我。

我的DBContext:

 public class ProjectContext : DbContext
{
    public ProjectContext()
        : base("OTMSProjects")
    {
    }

    public DbSet<ProjectEntry> Entries { get; set; }
    public DbSet<Requiernments> RequiernmentEntries { get; set; }
    public DbSet<Supplier> Suppliers { get; set; }
    public DbSet<Tender> Tenders { get; set; }
    public DbSet<UserProfile> UserProfiles { get; set; }
    //public DbSet<UserRoles> UserRoles { get; set; } // do I have to set this too?
}}

我的桌子:

     public class ProjectEntry
   {
    [Key]
    public int ID { get; set; }
    [Required]
    public string ProjectName { get; set; }
    public string Description { get; set; }
    public string Statue {get; set; }
    public string UplodedFiles { get; set; }
    public string Budget { get; set; }
    public string EstimateTime { get; set; }
    public string Criterias { get; set; }
    public DateTime? DueDate { get; set; }


    // Relations  with others tables

    public virtual Tender Tender { get; set; }// every  project have only one tender
    public virtual ICollection<Supplier> Suppliers { get; set; } // every  project have one or more  supplier 
    public virtual ICollection<Requiernments> Requirements { get; set; }

} 

........

   public class Requiernments
    {
                            [Key]
                            public int RequiernmentId { get; set; }
                            public int ID { get; set; }

                            public string RequiernmentName { get; set; }

                            public string RequiernmentType { get; set; }

                            public string RequiernmentPrioritet { get; set; }

                            public float RequiernmenWhight { get; set; }
                            public string ProviderAnswer { get; set; }
                            public string ProviderComments{ get; set; }
                            public virtual ProjectEntry Projects { get; set; } 


}

........

 public class Supplier
   {
    [Key]
    public int SupplierId { get; set; }
    public int ID { get; set; }
    public int SupplierName { get; set; }
    public int SupplierCat { get; set; }

    public virtual ICollection<ProjectEntry> Projects { get; set; }
}

...

  public class Tender
   {
    [Key]

    public int TenderId { get; set; }
    public string TenderName { get; set; }
    public string TenderMinstry{ get; set; }
    public int ID { get; set; }//link to project 
    public int UserId { get; set; }  //this links to the userid in the UserProfiles table
    public virtual ICollection<ProjectEntry> Projects { get; set; }
    //public virtual ICollection<UserProfile> Userprofile { get; set; } 
    public virtual UserProfile UserProfile { get; set; }
}

我的AccountModel中的会员表由Mvc4中的defualt创建(我只添加了RoleTable:

  [Table("UserProfile")]
  public class UserProfile
  {
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int UserId { get; set; }
    public string UserName { get; set; }
    public string EmailAddress { get; set; }
    public ICollection<UserRoles> UserRoles { get; set; }

}

   [Table("webpages_Roles")]
   public class UserRoles
  {
    [Key]
    public int RoleId { get; set; }
    public string RoleName { get; set; }
    [ForeignKey("UserId")]
    public ICollection<UserProfile> UserProfiles { get; set; }
   }

我也不确定如何将Userprofile与招标表和供应商表联系起来?

1 个答案:

答案 0 :(得分:0)

不确定你错过了什么。但是根据数据库创建,您必须遵循业务逻辑和规范化规则。

我的一些建议如下: 1. ProjectEntry 在这里,您应该单独创建一个状态表,并将其引用键作为StatusID提供给ProjectEntry表。

  1. 要求 您应该单独创建需求优先级和类型表。 为提供者问题和答案添加单独的表。我希望您需要为单个要求存储多个问题答案。

  2. 供应商 为供应商类别添加单独表

  3. 投标 单独创建招标部表,并参考招标表。

  4. 您应该为Uploaded files创建一个表格作为Documents。它应包含ID,ProjectId,Documentname,DocumentType,DocumentShortDescription,uplodatedDateTime字段。