0
说我有:EF4和的UnitOfWork - 如何让自定义属性工作
public class A
{
public virtual int Id { get; set; }
}
public class ARepository
{
private SomeContext _context;
public ARepository(IUnitOfWork unitOfWork)
{
_context = unitOfWork;
}
public A GetAById(int aId)
{
return _context.A.Where(o => o.Id == aId).SingleOrDefault();
}
}
public class B
{
public virtual int Id { get; set; }
public virtual Category Category { get ; set; } //enum with NEW and OLD values
public virtual int Quantity { get; set; }
}
public class BRepository
{
private SomeContext _context;
public BRepository(IUnitOfWork unitOfWork)
{
_context = unitOfWork;
}
public B GetBById(int bId)
{
return _context.B.Where(o => o.Id == bId).SingleOrDefault();
}
}
而且我与实体框架(第4.1代码)工作。
我将如何实现例如在类如自定义属性:
//returns the total of all B objects in the context where the category is NEW
public int NewBTotals
{
}
而不必创建上下文?
希望我的问题已经够清楚了,如果不是,请让我知道,我会试着更加描述我想达到的目标(耗尽时间)。
你的代码似乎有点不完整,就像你的'Category'属性缺少它的类型或名称。而且我不确定是否有'A'和'B'之间的关系,但是我会假设'A'具有与B的集合或关系。在任何一种情况下,我都会建议'GetNewBTotals'实现为扩展方法而不是自定义属性(该名称实际上意味着它是一种方法)。 – CodingGorilla
基本上,由于我无法修改的错误的数据库设计,A通过名为“Source_reference”的列与B有关系。然而,B也可以引用X,Y或Z.为了找出它依赖的父类,我们应该查找“源”列。如果我使用扩展方法,我必须以某种方式传递上下文,这不知何故我不确定什么是最好的方法。 –
你想总结些什么?您的评论说“上下文中的所有B对象的总数*”。但是,你必须有一个背景,为什么你不想创建一个?听起来很奇怪,因为上下文中的内容取决于之前做过的查询的类型或附加的内容等。 – Slauma