Database design asp.net mvc 4-多用户类图
我一直在寻找这个话题,但没有找到我想要的。 基本上,我开始计划一个包含所有UML内容、用例、类图等等的项目。 然后我们决定使用ASP.NETMVC。该应用程序是一种O-Desk或Elance 我有用户、承包商、公司、主持人和管理员 我有点困惑模型应该如何表示这些用户,以及如何使用asp.net mvc特性设置特权和角色 在一个普通的应用程序中,我会为它们中的每一个设置一个类,它们可能会扩展User,其中包含用户名、密码和电子邮件 在承包商类别中,我有关于承包商的所有信息,如他申请的工作、他的简历等 在Company类中,我发布了报价、公司名称等 那么,最好的做法是什么呢?我这里有一段代码Database design asp.net mvc 4-多用户类图,database-design,user-controls,asp.net-mvc-4,uml,class-diagram,Database Design,User Controls,Asp.net Mvc 4,Uml,Class Diagram,我一直在寻找这个话题,但没有找到我想要的。 基本上,我开始计划一个包含所有UML内容、用例、类图等等的项目。 然后我们决定使用ASP.NETMVC。该应用程序是一种O-Desk或Elance 我有用户、承包商、公司、主持人和管理员 我有点困惑模型应该如何表示这些用户,以及如何使用asp.net mvc特性设置特权和角色 在一个普通的应用程序中,我会为它们中的每一个设置一个类,它们可能会扩展User,其中包含用户名、密码和电子邮件 在承包商类别中,我有关于承包商的所有信息,如他申请的工作、他的简历
public class User
{
[Key]
public string UserID { get; set; }
[Required(ErrorMessage = "Email is required")]
[DataType(DataType.EmailAddress, ErrorMessage="Email Format is wrong. Example: user@user.com")]
[Remote("doesEmailExist", "Contractors", HttpMethod = "POST", ErrorMessage = "Email already exists. Please enter a different one.")]
public string Email { get; set; }
[Required]
[Remote("doesUserNameExist", "Contractors", HttpMethod = "POST", ErrorMessage = "User name already exists. Please enter a different user name.")]
public string Username { get; set; }
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
public string Password { get; set; }
}
还有一点小疑问,我应该签合同吗?或者我获取用户ID?只是问一下,因为我不知道数据库生成后会是什么样子。不管怎样,我现在要试试这个
public class Contractor extends User
{
[Key]
public int ContractorID { get; set; }
[Required(ErrorMessage = "First Name is required")]
[StringLength(20, ErrorMessage = "First Name max length is 20 characters")]
[Display(Name = "First Name")]
public string FirstName { get; set; }
[Required(ErrorMessage = "Last Name is required")]
[StringLength(20, ErrorMessage = "First Name max length is 20 characters")]
[Display(Name = "Last Name")]
public string LastName { get; set; }
}
public class Company extends User
{
[Key]
public int CompanyID { get; set; }
[Required(ErrorMessage = "Name of the Company required")]
public string CompanyName { get; set; }
private List<Offer> Offers;
public void AddOffer (Offer offer) {
Offers.Add(offer);
}
public void RemoveOffer(Offer offer)
{
Offers.Remove(offer);
}
公共类承包商扩展用户
{
[关键]
public int ContractorID{get;set;}
[必需(ErrorMessage=“需要名字”)]
[StringLength(20,ErrorMessage=“名字最大长度为20个字符”)]
[显示(Name=“First Name”)]
公共字符串名{get;set;}
[必需(ErrorMessage=“需要姓氏”)]
[StringLength(20,ErrorMessage=“名字最大长度为20个字符”)]
[显示(Name=“Last Name”)]
公共字符串LastName{get;set;}
}
公共类公司扩展用户
{
[关键]
public int CompanyID{get;set;}
[必需(ErrorMessage=“必需的公司名称”)]
公共字符串CompanyName{get;set;}
私人名单优惠;
公开发售(发售){
要约。添加(要约);
}
公开无效移除要约(要约要约)
{
提议。删除(提议);
}
}
感谢您提供的任何帮助或提示!
问候。我会避免使用model做任何事情。模型用于数据事务,需要反映您的数据库 你有两件事。 -一个是模型,您可以使用该模型以原始状态存储数据 -另一个是视图,您需要在其中显示该信息 那么,该怎么办??简单,首先进行de建模并生成viewModel。viewModel将反映视图及其规则,因此每个视图和局部视图都有一个。使其简单使用模型的编写方式,但去掉视图中的内容(exe:[必需(ErrorMessage=“Last Name is Required”)]),因为您将创建另一个类来保存这些内容,例如,您可以创建一个视图,其中显示两种类型的用户,您可以创建如下内容:
public class CompanyView
{
private company= new Company();
private contractor = new Contractor();
[Display(Name = "Contractor Name")]
public string ContractorName{ get{return contractor.FisrtName+ contractor.LastName;} }
public int CompanyID { get{return company.CompanyID;} set{company.CompanyID = value;}}
[Required(ErrorMessage = "Name of the Company required")]
public string CompanyName { get{return company.CompanyName;} set{company.CompanyName = value;}}
private List<Offer> offers;
public SelectList Offers{ get { return new SelectList(offers, "OfferID", "OfferName", ""); } }
}
公共类公司视图
{
私人公司=新公司();
私人承包商=新承包商();
[显示(名称=“承包商名称”)]
公共字符串ContractorName{get{return contractor.FisrtName+contractor.LastName;}}
public int CompanyID{get{return company.CompanyID;}set{company.CompanyID=value;}}
[必需(ErrorMessage=“必需的公司名称”)]
公共字符串CompanyName{get{return company.CompanyName;}set{company.CompanyName=value;}}
私人名单优惠;
公共选择列表提供{获取{返回新的选择列表(提供,“OfferID”、“OfferName”和“);}
}
或者类似的。关键是,您现在可以创建一个类,该类表示的视图与您在数据库中看到的视图完全相同。这样做,您可以扩展视图,并使用您的模型制作一些东西,以便向用户显示并自动填充。例如,当用户发布带有视图信息的表单时,将返回ViewModel alredy filled。您可以使用viewmodel中的alredy填充模型作为私有来保存所需的任何内容
注意,我注意到在viewmodel中使用了所有contractor字段。想象一下,当您更改公司详细信息时,您只需要显示一些承包商名称。在这种情况下,你不需要从承包商那里保存任何东西,你只需要显示他的名字,在viewmodel中,你只需要输入他的名字来显示,你不需要进行必要的验证,等等。只需显示它是enouth。数据将来自一个查询,您可以在创建viewModel时将其填入构造函数、工厂或任何您想要的内容中
这是令人困惑的,但我希望它能帮助你,如果你不明白的东西,我会努力让它更好。我也为“一般”英语感到抱歉