我必须存储农民的资料。为此,我将MST_FarmerProfile
作为主表,其中包含personDetails_Id,bankDetails_Id,contactDetails_Id
作为外键,用于在不同表格中存储个人详细信息,银行详细信息和联系人详细信息。
现在主要的是每当我更新记录时,修改的细节都保存在同一个表中,而先前的记录保存在personal details history, bank details history and contact Details history
表中,这些表再次包含personDetails_Id,bankDetails_Id,contactDetails_Id
作为外键。基本上我们需要跟踪更新的记录。以下是我的数据库架构:
我尝试过使用连接,但问题是假设我更新两次相同的记录,每个历史表将包含2行具有相同的外键,因此我的连接提供2X2X2 = 8条记录,而我只需要2条。
答案 0 :(得分:0)
我做到了这一点并且有效:
List<FarmerDetailsReport> fdr =
(from fp in RptdataAccess.MST_FarmerProfile
join pdh in RptdataAccess.PersonalDetailsHistory on fp.personDetails.Id equals pdh.PersonalDetails.Id
join cdh in RptdataAccess.ContactDetailsHistory on fp.contactDetails.Id equals cdh.ContactDetails.Id
join bdh in RptdataAccess.BankDetailsHistory on fp.bankDetails.Id equals bdh.BankDetails.Id
select new FarmerDetailsReport
{
FarmerURNNo = fp.URN_No,
CreatedBy = fp.UserId,
CreatedOn = fp.CreatedOn,
FarmerName = pdh.FarmersName,
FatherOrHusbandName = pdh.FatherHusbandName,
DateofBirth = pdh.DateOfBirth,
Gender = pdh.IsMale.ToLower() == "yes" ? "Male" : "Female",
MaritalStatus = pdh.MaritalStatus,
Religion = pdh.Religion.ToLower() == "other" ? pdh.otherReligion : pdh.Religion,
TypeofBank = bdh.bankType,
BankName = bdh.bankName,
BranchName = bdh.branchName,
BankAccountNo = bdh.bankAccountNo,
Address1 = cdh.Address1,
State = cdh.State,
District = cdh.District,
UpdatedOn = pdh.ChangedOn,
UpdatedBy = pdh.ChangedBy
} ).GroupBy(p => new { p.UpdatedOn }).Select(g => g.FirstOrDefault()).ToList();