我正在围绕实体框架及其相关的.edmx文件做一些研究。
我们当前的设置中有许多这些文件被编译到我们广泛使用的库中。当然,这不是一个很好的解决方案--每次我们想要更新或添加数据库层中的内容时,我们都需要重新编译这个库。
我们只使用存储过程,目前的方法是在对象上下文上使用ExecuteFunction方法。但是,这需要了解从edmx文件导入的函数返回什么类型(context.ExecutionFunction<T>()返回ObjectResult<T>)。
我的理论解决方案是将我们希望在相对路径上使用的任何.edmx文件存储起来,并让库在运行时全部加载它们。
以前有人试过这个吗?它起作用了吗?有什么性能方面的考虑要考虑吗?这将在电子商务环境中使用,因此效率和速度非常重要。
编辑以获得更多的清晰度:
当然,可以将每个单独的.edmx文件编译到自己的程序集中,这可能允许使用这。这方面的任何投入也将是很好的。
我们现在打的电话是这样的
Database.MakeCall<T>("stored_procedure_name", parametersCollection, KnownDatabases.Database);在其构造函数中,数据库处理程序将保存它所知道的每个数据库上下文的实例(库中的每个the.edmx文件)。使用KnownDatabases枚举,它选择要对哪个数据库运行查询。
理想情况下,我想实现这样的呼叫:
Database.MakeCall<T>("context_name", "stored_procedure_name", parametersCollection);在数据库处理程序中,在其构造函数中,搜索文件夹中的.edmx文件并加载它们,然后根据上下文名称存储每个上下文的实例。如何定义或获取T现在有点模糊。
在这两种情况下,返回类型都是ObjectResult<T>。
发布于 2011-08-15 12:06:20
您可能想考虑的是一个ruby-esque DB映射,其中DB模式是在运行时确定的,因此您不需要维护do映射库代码。
对于.net来说,Subsonic有着和城堡和nHydrate一样的ORM。我知道这样的系统可以很好地执行,因为C++实现有一些良好的性能统计数据(即使它确实生成代码
https://stackoverflow.com/questions/7064407
复制相似问题