我有许多交叉链接表,其中有两个链接列链接到父表,例如:
CREATE TABLE [dbo].[InsuranceDocuments]
(
[InsuranceDocumentId] [bigint] IDENTITY(1,1) NOT NULL,
[InsuranceId] [bigint] NOT NULL,
[DocumentId] [bigint] NOT NULL
)
CREATE TABLE [dbo].[PersonDocuments]
(
[PersonDocumentId] [bigint] IDENTITY(1,1) NOT NULL,
[PersonId] [bigint] NOT NULL,
[DocumentId] [bigint] NOT NULL
)
1) InsuranceId 链接到 Insurances 表
2) PersonId 链接到 Persons 表
3) DocumentId 链接到 Documents 表
在“人员详细信息”或“保险详细信息”等屏幕上,仅需要在初始加载时显示文档信息,因此我的“文档列表”结构对于所有此类情况都是相同的。文档表定义我将省略(太大),但它有基本的东西,如 Path、DocumentCategoryId 等。
这是我的个人和保险文件的 LINQ:
public IEnumerable<Models.SearchResult.Document> GetInsuranceDocuments(long parentId)
{
using (var db = Core.GetDb())
{
var items = db.InsuranceDocuments.Where(a => a.InsuranceId == parentId)
.Select(a => new Models.SearchResult.Document
{
CategoryId = a.Document.DocumentCategoryId,
TypeId = a.Document.DocumentTypeId,
CreateDate = a.CreateDate,
Name = (a.Document.DocumentName == null ? a.Document.DocumentPath : a.Document.DocumentName)
}).OrderBy(a=>a.Name).ToArray();
return items;
}
}
public IEnumerable<Models.SearchResult.Document> GetPersonDocuments(long parentId)
{
using (var db = Core.GetDb())
{
var items = db.PersonDocuments.Where(a => a.PersonId == parentId)
.Select(a => new Models.SearchResult.Document
{
CategoryId = a.Document.DocumentCategoryId,
TypeId = a.Document.DocumentTypeId,
CreateDate = a.CreateDate,
Name = (a.Document.DocumentName == null ? a.Document.DocumentPath : a.Document.DocumentName)
}).OrderBy(a=>a.Name).ToArray();
return items;
}
}
如您所见,两者的 Select 方法相同,
并且可以很好地概括该部分,需要帮助。谢谢你。