1
我不确定这是否可能与实体框架,但我复制了太多的代码填充对象。LINQ w /实体框架 - 填充对象
目前我的方法做这样的事情:
return (from s in context.some_table
join u in context.user_table on s.user_id equals u.id
where s.id == someId
select new MyObject()
{
TableColumn = s.some_column,
User = new MyUser()
{
Username = u.username,
Id = u.id,
}
}.FirstOrDefault();
我刚刚输入了这一点作为一个例子。我有很多查询,其中包含有关用户的信息(不仅仅是在该示例中)。因此,在我所有的查询中,我都放入了相同的代码块。如果我有100个方法使用该代码块,并且我想添加另一个返回的列,那么我必须更新100个方法。屁股疼痛。
我想要做的是让用户对象填充一个可重用的方法。这种方式添加/删除列返回只需要在一个地方改变。像:
return (from s in context.some_table
join u in context.user_table on s.user_id equals u.id
where s.id = someId
select new MyObject()
{
TableColumn = s.some_column,
User = FillUser(u)
}.FirstOrDefault();
FillUser将是方法。当然这不适用于实体框架。
有什么我可以做的吗?我当然可以返回整个用户表,但这是比我需要的更多的信息,所以这是一种浪费。
我使用.NET 4.0,如果有帮助。
如果使用表中的数据子集创建对象而不是从它们返回所有数据会滥用它,那么Microsoft应该真的更新它们的示例。 – GregInWI2
他们为什么要这样做?如果您不需要重复100次,投影就可以。如果你需要使用它100倍,那么'QueryView'就是例子,这就是为什么'QueryView'存在的原因 - 具有可重用性。 –
@ GregInWI2:你真的使用表映射。 – Naor