我尝试创建一个允许用户将公司添加到列表中的数据模型,然后在添加时,允许添加有关公司的更多详细信息,这样可以添加员工信息等内容。但是,如果不创建多个类,控制器文件和视图文件夹,我无法弄清楚如何执行此操作。
我在模型类文件中的当前代码是:
namespace Intranet.Models
{
public class AddCustomers
{
public int AddCustomersID { get; set; }
public string CompanyName { get; set; }
...
public class EmployeeInfo
{
public int EmployeeInfoID { get; set; }
public string Forename { get; set; }
...
}
public class ContactInfo
{
public int ContactInfoID { get; set; }
public string Code { get; set; }
...
}
}
}
上下文文件:
public IntranetContext() : base("name=IntranetContext")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
public System.Data.Entity.DbSet<Intranet.Models.AddCustomers> AddCustomers { get; set; }
public System.Data.Entity.DbSet<Intranet.Models.AddCustomers.EmployeeInfo> EmployeeInfo { get; set; }
public System.Data.Entity.DbSet<Intranet.Models.AddCustomers.ContactInfo> ContactInfo { get; set; }
但这不起作用,因为嵌套类不会出现在任何地方,除了我的本地数据库。
有没有办法让嵌套类出现在每个客户的详细信息视图中?或者有一种完全不同的方法吗?
答案 0 :(得分:0)
namespace Intranet.Models
{
public class AddCustomers
{
public int AddCustomersID { get; set; }
public string CompanyName { get; set; }
public EmployeeInfo EmployeeInfo { get; set; }
public ContactInfo ContactInfo { get; set; }
...
}
public class EmployeeInfo
{
public int EmployeeInfoID { get; set; }
public string Forename { get; set; }
...
}
public class ContactInfo
{
public int ContactInfoID { get; set; }
public string Code { get; set; }
...
}
}
然后在您的上下文中,您将拥有:
public System.Data.Entity.DbSet<Intranet.Models.AddCustomers> AddCustomers { get; set; }
public System.Data.Entity.DbSet<Intranet.Models.EmployeeInfo> EmployeeInfo { get; set; }
public System.Data.Entity.DbSet<Intranet.Models.ContactInfo> ContactInfo { get; set; }
..在控制器中,您可以执行以下操作:
var customer = context.AddCustomers
.FirstOrDefault(c=>c.EmployeeInfo.Forename=="bob");
...