但是,我一直在我最近的项目中广泛使用LINQ,但我一直无法找到一种处理对象的方式,看起来不是草率或不切实际。LINQ to SQL业务对象创建最佳实践
我还会注意到我主要使用ASP.net。
我讨厌将我的数据上下文或LINQ返回类型暴露给我的UI代码。我更喜欢对业务对象进行更细粒度的控制,而且它似乎与db非常紧密地联系在一起,成为最佳实践。
这里是我试过的方法..
工程项目为一个自定义类
dc.TableName.Select(λ => new MyCustomClass(λ.ID, λ.Name, λ.Monkey)).ToList();
显然,这往往会导致大量的wireup代码用于创建,更新等...
创建包装器返回的对象
public class MyCustomClass
{
LinqClassName _core;
Internal MyCustomClass(LINQClassName blah)
{
_core = blah;
}
int ID {get { return _core.ID;}}
string Name { get {return _core.Name;} set {_core.Name = value;} }
}
...
dc.TableName.Select(λ => new MyCustomClass(λ)).ToList();
似乎工作得很好,但重新连接更新似乎是几乎不可能击败有所目的。
我也倾向于使用LINQ查询进行转换等,通过我的代码,我很担心这种方法的速度,尽管我还没有尝试过使用足够大的集合来确认。
创建包装器返回的对象,而持续的数据上下文
public class MyCustomClass
{
LinqClassName _core;
MyDataContext _dc;
...
}
我的对象中坚持的数据上下文大大简化了更新,但似乎像利用会话状态特别是当大量的开销。
快速提示:我知道λ在这里的用法在数学上并不正确 - 我倾向于将它用于我的绑定变量,因为它在视觉上很突出,并且在大多数lambda语句中,它是重要的转换,而不是变量 - 不知道这是否有什么意义,但没有说
对不起,这是一个非常长的问题。 预先感谢您的意见和新年快乐!
你真的可以使用这样的lambda字符吗?真棒。 – 2010-01-01 07:11:46
我也喜欢lambda字符用法,荣誉。 – 2010-01-01 07:44:58
我无法想象使用λ是否有效,除非您以某种方式将它映射到某个键。尽管如此,它看起来很酷。 – Merritt 2012-03-20 21:15:53