【问题标题】:Entity Framework - Database table Join in Linq to Entities实体框架 - 在 Linq 中加入数据库表到实体
【发布时间】:2013-12-02 12:36:22
【问题描述】:

我有两个名为员工和员工详细信息的数据库表。我使用实体框架。

我想制作一个包含两个表格字段的编辑页面。现在,当我单击网格视图(具有两个表的详细信息)时,我传递了主 ID 并基于它进行连接。

加盟详情如下

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 绑定。

请指导我如何在列表上方键入演员表或查看列表的详细信息。

下面是员工类

 [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; }


}

【问题讨论】:

  • 你能显示EmployeeEmployeeDetail型号

标签: asp.net-mvc linq entity-framework join linq-to-entities


【解决方案1】:

试试下面这个

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
     });

【讨论】:

  • 我试过了,但我无法访问 EE_GENERAL 或 EE_DEMOGRAPHIC 的属性
  • 应该是`select new CombineModel { EE_GENERAL=g, EE_DEMOGRAPHIC=d }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-26
  • 1970-01-01
  • 2017-07-07
  • 2018-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多