【发布时间】:2015-12-26 06:20:45
【问题描述】:
我的数据库包含 100 多个经过高度规范化的表,并且数据不会经常更改。我正在使用LinqToSql,并封装了一些简单的调试和查询,这样就不需要理解整个数据库设计来获取数据。我试图在不真正关心性能的情况下启用快速原型设计。
有没有一种简单的方法可以将整个 LinqToSql 对象枚举到内存中的只读容器中?如果存在类似的东西,来自某个时间点的缓存也可以。它会很大,我完全意识到这一点。
using (Context db = new Context())
{
var a = db.Table1s.AsEnumerable();
var b = db.Table2s.AsEnumerable();
var q = a.Where(x => x.SomeComplexMethod())
.Join(b...)
}
我希望能够做这样的事情:
using (Context db = new Context())
{
var enumerated = db.Materialize();
var q = enumerated.Table1s()
.Where(x => x.SomeComplexMethod())
.Join(enumerated.Table2s...)
}
【问题讨论】:
-
我不确定是否可以将其设为只读,但 Entity Framework 不会为您提供您所追求的大部分功能吗? asp.net/entity-framework
-
@Mark 是否要创建可用作模型类的 c# POCOS AFAIK LinqToSql 不会创建 POCOS,您需要将 dbml 单独添加到项目中。 codeproject.com/Articles/892233/POCO-Generator 这是否满足您的要求
-
POCOS 用于真正的交易,但要正确地做更多的工作。这不是用于生产的,只是一些快速而肮脏的东西。
标签: c# linq-to-sql