我正在研究与Entity Framework及其相关的.edmx文件有关的问题。
我们目前的设置中有许多这些文件编译成一个库,我们广泛使用它们。当然,这并不是一种优雅的解决方案——每当我们想要更新或添加数据库层中的内容时,我们就需要重新编译这个库。
我们专门使用存储过程,我们目前的方法是在对象上下文中使用
我的理论解决方案是将我们想要使用的任何.edmx文件存储在相对路径中,并在运行时让库加载它们所有。
有人试过这个吗?它有效吗?有没有考虑到性能问题?这将用于电子商务环境,因此效率和速度非常重要。
更多澄清的编辑:
它肯定可以将每个单独的.edmx文件编译成自己的程序集,这可能允许使用this。对此的任何意见也将很好。我们现在所做的呼叫类似于这样:
在其构造函数中,数据库处理程序将持有它所知道的每个数据库上下文(库中的每个.edmx文件)的实例。使用“KnownDatabases”枚举,它选择要针对哪个数据库运行查询。
理想情况下,我希望实现这样的调用:
在其构造函数中,数据库处理程序将搜索一个文件夹以查找所有的 .edmx 文件,然后针对每个上下文名称存储该上下文的实例。目前尚不清楚如何定义或获取
在这两种情况下,返回类型都将是
我们目前的设置中有许多这些文件编译成一个库,我们广泛使用它们。当然,这并不是一种优雅的解决方案——每当我们想要更新或添加数据库层中的内容时,我们就需要重新编译这个库。
我们专门使用存储过程,我们目前的方法是在对象上下文中使用
ExecuteFunction
方法。然而,这确实需要了解从edmx文件导入的函数返回什么类型(context.ExecutionFunction<T>()
返回ObjectResult<T>
)。我的理论解决方案是将我们想要使用的任何.edmx文件存储在相对路径中,并在运行时让库加载它们所有。
有人试过这个吗?它有效吗?有没有考虑到性能问题?这将用于电子商务环境,因此效率和速度非常重要。
更多澄清的编辑:
它肯定可以将每个单独的.edmx文件编译成自己的程序集,这可能允许使用this。对此的任何意见也将很好。我们现在所做的呼叫类似于这样:
Database.MakeCall<T>("stored_procedure_name", parametersCollection, KnownDatabases.Database);
在其构造函数中,数据库处理程序将持有它所知道的每个数据库上下文(库中的每个.edmx文件)的实例。使用“KnownDatabases”枚举,它选择要针对哪个数据库运行查询。
理想情况下,我希望实现这样的调用:
Database.MakeCall<T>("context_name", "stored_procedure_name", parametersCollection);
在其构造函数中,数据库处理程序将搜索一个文件夹以查找所有的 .edmx 文件,然后针对每个上下文名称存储该上下文的实例。目前尚不清楚如何定义或获取
T
。在这两种情况下,返回类型都将是
ObjectResult<T>
。