我有一个要使用EF Code First的Fluent配置进行映射的实体:
class Transaction
{
int LineItemId { get; set; }
string TranNumber { get; set; }
string TaxLotId { get; set; }
string TradeLeg { get; set; }
public virtual Transaction NewDealTransaction { get; set; }
public virtual ICollection<GvaTransactions> RelatedTransactions { get; set; }
}
编辑有一个用于保存此数据的表(为简洁起见,省略了不相关的列)。
CREATE TABLE [dbo].[Transactions] (
[LineItemId] INT IDENTITY (1, 1) NOT NULL,
[TranNumber] VARCHAR (20) NOT NULL,
[TaxLotId] VARCHAR (20) NULL,
[TradeLeg] VARCHAR (20) NULL,
CONSTRAINT [PK_GVATransactions] PRIMARY KEY CLUSTERED ([LineItemID] ASC)
)
LineItemId是主键。
该RelatedTransactions
关系应表示具有相同TaxLotId的所有事务都相关的事实。
最后NewDealTransaction
是具有相同TaxLotId和`TradeLeg ==“ NewDeal”的交易。
如何编写流畅的映射来表示这些关系?
注意:我的偏好不是更改后端,因为这是针对我继承的现有表设计的,该表已经有很多数据。
您所要求的不是外键关系(因此是Entity Framework关系/导航属性)所设计的。
它们是为了保持数据完整性,而不是对数据进行过滤。
要查询和使用相关记录(根据您的定义),您只需按照以下方式查询:
相关记录:
var relatedRecords = context.Transactions.Where(t=>t.TaxLotId == "something");
新优惠:
var newDeals = context.Transactions.Where(t=>t.TaxLotId == "something" && t.TradeLeg == "NewDeal");
为了提高效率,我建议在TaxLotId和TradeLeg列上使用复合索引
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句