Asp.net mvc 实体框架-Linq中的数据库表连接到实体
我有两个名为employee和employee detail的数据库表。我使用整体框架 我想创建一个包含两个表字段的编辑页面。现在,当我单击grid视图(包含两个表的详细信息)时,我传递了主id并基于它进行连接 连接详细信息如下所示Asp.net mvc 实体框架-Linq中的数据库表连接到实体,asp.net-mvc,linq,entity-framework,join,linq-to-entities,Asp.net Mvc,Linq,Entity Framework,Join,Linq To Entities,我有两个名为employee和employee detail的数据库表。我使用整体框架 我想创建一个包含两个表字段的编辑页面。现在,当我单击grid视图(包含两个表的详细信息)时,我传递了主id并基于它进行连接 连接详细信息如下所示 var list = (from g in db.Employee join d in db.db.EmployeeDetail on g.EGID equals d.EGID where
var list = (from g in db.Employee
join d in db.db.EmployeeDetail on g.EGID equals d.EGID
where g.EGID == id
select new CombineModel
{
EE_GENERAL = g,
EE_DEMOGRAPHIC = d
});
在上面的代码中,“CombineModel”是一个包含两个表字段的属性的类
public class CombineModel
{
public Employee EE_GENERAL { get; set; }
public EmployeeDetail EE_DEMOGRAPHIC { get; set; }
}
现在,当我通过传递“列表”返回编辑页面的视图时,它会显示错误,并且我无法获取我的加入数据。我的编辑视图与combinemodel绑定
请指导我如何在列表上方键入cast或查看列表的详细信息
下面是员工等级
[MetadataType(typeof(Employee_Validation))]
public partial class Employee
{
}
public class Employee_Validation
{
public Decimal EGID { get; set; }
public Decimal CID { get; set; }
[StringLength(20)]
//[Required(ErrorMessage = "Employee ID is required")]
public String EmployeeID { get; set; }
[Required(ErrorMessage = "Effective Date is required")]
[DataType(DataType.Date)]
public DateTime EffectiveDate { get; set; }
public DateTime AddDate { get; set; }
public String AddOper { get; set; }
public DateTime ChgDate { get; set; }
public String ChgOper { get; set; }
[StringLength(30)]
[Required(ErrorMessage = "Last Name is required")]
public String LastName { get; set; }
[StringLength(30)]
[Required(ErrorMessage = "First Name is required")]
public String FirstName { get; set; }
[StringLength(15)]
public String MiddleName { get; set; }
[StringLength(50)]
public String CheckName { get; set; }
public Int32 SSNO { get; set; }
[Required(ErrorMessage = "Please select atleast one security group.")]
public String SecurityGroup { get; set; }
[Required(ErrorMessage = "Please select atleast one security level.")]
public Byte SecurityLevel { get; set; }
public Byte EESequence { get; set; }
[Required(ErrorMessage = "Change Type is required")]
public Byte ChangeType { get; set; }
[StringLength(200)]
public String OptionalComments { get; set; }
}
下面是EmployeeDetail类
[MetadataType(typeof(EmployeeDetail_Validation))]
public partial class EmployeeDetail
{
}
public class EmployeeDetail_Validation
{
public Decimal DemographicId { get; set; }
public Decimal CID { get; set; }
public Decimal EGID { get; set; }
public DateTime EffectiveDate { get; set; }
public DateTime AddDate { get; set; }
public String AddOper { get; set; }
public DateTime ChgDate { get; set; }
public String ChgOper { get; set; }
[Required(ErrorMessage = "Birthdate is required")]
[DataType(DataType.Date)]
public DateTime Birthdate { get; set; }
[StringLength(40)]
public String NickName { get; set; }
[StringLength(100)]
[Required(ErrorMessage = "Address1 is required")]
public String Address1 { get; set; }
[StringLength(100)]
public String Address2 { get; set; }
[StringLength(100)]
public String Address3 { get; set; }
[StringLength(100)]
[Required(ErrorMessage = "City is required")]
public String City { get; set; }
[Required(ErrorMessage = "Please select atleast one State.")]
[StringLength(2)]
public String State { get; set; }
public String Zip { get; set; }
[Required]
[StringLength(200)]
[RegularExpression(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$", ErrorMessage = "Please enter a valid e-mail adress")]
[Display(Name = "Email address*")]
public String EmailAddress { get; set; }
[Required(ErrorMessage = "Please select atleast one Gender.")]
public String Gender { get; set; }
[Required(ErrorMessage = "Please select atleast one Marital Status.")]
public String MaritalStatus { get; set; }
[StringLength(200)]
public String SpouseName { get; set; }
[DataType(DataType.Date)]
public DateTime SpouseBirth { get; set; }
public Int32 SpouseSSNO { get; set; }
public Int32 EEOEthnic { get; set; }
[Required(ErrorMessage = "Please select atleast one EEOJob.")]
public Int32 EEOJob { get; set; }
[Required(ErrorMessage = "Please select atleast one Citizen.")]
public Boolean Citizen { get; set; }
public Decimal HomePhone { get; set; }
[Range(0,int.MaxValue,ErrorMessage="Please enter proper MobilePhone.")]
public Decimal MobilePhone { get; set; }
public Decimal OfficePhone { get; set; }
[StringLength(10)]
public String OfficeExt { get; set; }
[Range(0,int.MaxValue,ErrorMessage="BldgNo is too longer.")]
[Required(ErrorMessage = "Building Number is required")]
public Decimal BldgNo { get; set; }
[StringLength(200)]
[Required(ErrorMessage = "Emergency Contact is required")]
public String EmergContact { get; set; }
public Decimal EmergPhone { get; set; }
[Required(ErrorMessage = "No Of Childeren is required")]
public Int32 NoOfChilderen { get; set; }
}
试试下面这个
var list = (from g in db.Employee
join d in db.db.EmployeeDetail on g.EGID equals d.EGID
where g.EGID == id
select new CombineModel
{
EE_GENERAL.PropertyName = g.ColumnName,
EE_DEMOGRAPHIC.PropertyName = d.ColumnName
});
您可以显示
Employee
和EmployeeDetail
model吗?我尝试过,但无法访问EE_GENERAL或EE_Demographics的属性,该属性应为“选择新组合模型”{EE_GENERAL=g,EE_Demographical=d}