gpt4 book ai didi

c# - 在 Entity Framework 中映射选择存储过程

转载 作者:太空狗 更新时间:2023-10-29 22:54:08 24 4
gpt4 key购买 nike

我的场景我正在使用带有 Entity Framework 4.1 的 Visual Studio 2010我有一个包含许多表和许多存储过程的遗留数据库。我正在使用 MVC 3 编写 ASP.NET C# 程序

我采用了使用 ADO.NET DbContext 的“数据库优先”设计,因此我有一个 edmx,其中所有模型和关联以及导航属性都设置得很好。我可以将插入、更新、删除程序映射到相关模型。我使用“函数导入”来导入其他存储过程。但是,我找不到将我的选择过程映射到选择操作(按 ID 选择、选择列表、按过滤器选择等)的方法。

EF 似乎使用延迟加载,所以我想要发生的是当一个对象获取其子对象时它使用已经编写的存储过程。(选择过程考虑了“IsDeleted”标志,并使用“ORDER BY”子句等)

我从这篇文章看到 http://weblogs.asp.net/scottgu/archive/2007/08/16/linq-to-sql-part-6-retrieving-data-using-stored-procedures.aspxLinq to SQL 允许拖放 SP,这或多或少听起来正是我想要的。

我也遇到过 DefiningQuery 一词。 http://msdn.microsoft.com/en-us/library/cc982038.aspx这是我想要的吗?我不喜欢“对存储模型所做的任何更改,包括定义查询,将在您运行更新模型向导时被覆盖”这一注释。

总而言之,我想要发生的是当一个对象获取其子对象时它使用我的存储过程。

我可以使用 Entity Framework 实现我的目标吗?我错过了一些明显的东西吗?

或者我应该尝试变得非常聪明并修改 db Entity T4 模板,以便,例如,我生成的 Address 模型具有此属性:

public virtual ICollection<AddressLine> AddressLines { 
get{
DBWrapper _db = new DBWrapper();
return _db.GetAddressLines(AddressID);
}
set{};
}

其中 GetAddressLines 是调用函数导入并进行必要转换的自定义函数。

最佳答案

这是不可能的。您可以将存储过程作为函数导入导入并手动执行它们,但不能将 EF 生成的查询替换为自定义存储过程。

关于c# - 在 Entity Framework 中映射选择存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7953855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com