Entity Framework 4、复杂类型、StoredProcs 和临时表的问题

2023-11-27

我正在 Entity Framework 4 上折腾,遇到了一个小问题。

我有一些存储过程正在拉入我的 EDMX 中。当我从这些过程创建复杂类型时,EF 获取列信息没有问题。除了一处。困惑了一段时间后,我发现是我的临时表被填充导致了问题。实际上,只是调用 INSERT 到临时表中导致了问题。我实际上并没有向其中填充任何信息。

虽然我知道我可以手动创建一个复杂类型,然后将函数映射到该类型,但我希望能够让 EF 为我处理它。有谁知道我做错了什么?

下面是一个不起作用的示例过程。在数据库中运行它并将过程添加到您的 EDMX。然后尝试在“添加函数导入”屏幕中获取列信息。什么都没有返回。注释掉临时表的 INSERT 并获取列信息并且它可以工作。

谢谢, 史蒂夫

CREATE PROCEDURE dbo.TestProc
AS

SET NOCOUNT ON  

    CREATE TABLE #TempTable(
        StartDate datetime
    )

    INSERT INTO #TempTable
    SELECT  null


    DROP TABLE #TempTable

    SELECT 1 AS ReturnValue

SET NOCOUNT OFF
GO

有几件事要尝试。

  1. Use 变量表相反 -> 也许导入向导更喜欢这样?
  2. 命名您的返回字段。

尝试使用以下存储过程(未经测试..只是大声思考......)

CREATE PROCEDURE dbo.Foo
AS

    SET NOCOUNT ON

    DECLARE @ResultTable TABLE (SomeId INTEGER)

    INSERT INTO @ResultTable
    SELECT DISTINCT Id AS Identity -- Or u can rename this field to anything...
    FROM SomeExistingTableWhichHasAnIdentityField

GO

现在尝试一下,看看向导是否刷新。

--

尝试#2:)

好的..当 EF 设计器/向导/任何东西无法准确地弄清楚我的存储过程应该返回什么时,我通常会执行以下操作:-

  1. 确保存储过程根本不存在于 EF 设计器/上下文等中。(您有一个干净的起点)
  2. 打开您的存储过程并/* /*注释掉一切在过程定义之后。

eg..

ALTER PROCEDURE dbo.Foo
(
    Bar1 INT,
    Bar2 TINYINT,
    ... // whatever u have as your optional input arguments //
)
AS
    SET NOCOUNT ON

    /* 
    .... every thing in here is commented out 
    */
GO

现在 ... 3. 在存储过程中添加强制假返回,这(或多或少)只是defines输出结构/字段。

eg..

ALTER PROCEDURE dbo.Foo
(
    Bar1 INT,
    Bar2 TINYINT,
    ... // whatever u have as your optional input arguments //
)
AS
    SET NOCOUNT ON

    SELECT 1 AS Id, 1 AS UserId, 1 AS SomeOtherId, 
        CAST('AAA' AS NVARCHAR(350)) AS Name,
        -- etc etc etc..
    /* 
    .... every thing in here is commented out 
    */
GO

and then ...

  1. 将此存储过程添加到您的 EF 设计器/向导/等...现在正确的字段应该由设计器“确定”。惊人的。是的..这些值都是硬编码的..但是没关系(到目前为止)。
  2. 一旦您对 EF 现在已正确更新感到满意,请返回到您的存储过程,并删除所有硬编码的 SELECT(我们在上面的步骤中所做的)。现在我们删除注释掉整个真实代码。所以你应该找回原来的存储过程。

...现在 EF 已更新,并且不知道我们已经更改了存储过程的管道。

win :)

这对你有用吗?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Entity Framework 4、复杂类型、StoredProcs 和临时表的问题 的相关文章

  • 实体框架、dll、excel

    我用C 编写了Excel使用的dll 该dll是COM注册的 我与 Excel 的连接没有问题 该 dll 使用实体框架 5 从 SQL Server 数据库检索数据 如果我通过控制台应用程序运行该 dll 则该 dll 工作正常 但是当我
  • Automapper实体框架外键为空

    我正在尝试使用实体框架更新数据库 我使用自动映射器将实体映射到视图模型 并以相同的方式将其映射回来 HttpPost ValidateAntiForgeryToken public ActionResult Edit FromJson My
  • C# 中 LINQ 中的按多列分组

    我有一个类如下 public class ActualClass public string BookName get set public string IssuerName get set public DateTime DateOfI
  • 如何将存储过程结果映射到自定义类?

    我在用entity framework 5我已经添加了两个存储过程到我的 edmx model 第一个存储过程返回一个字符串 如果我在 Visual Studio 中打开模型浏览器 我可以更改Returns a Collection Of节
  • 抽象类型 X 没有映射的后代,因此无法映射

    我有以下模型 public abstract class AbstractBase public abstract class AbstractBase
  • 使用实体框架从集合中删除项目

    我正在使用DDD 我有一个 Product 类 它是一个聚合根 public class Product IAggregateRoot public virtual ICollection
  • 限制实体框架中子实体的数量

    底线在前 有没有一种简洁的方法可以限制可以属于实体框架中父级的子实体的数量 我现在使用的是4 3 1 问题 我正在开发一个 ASP NET MVC3 站点 它通过使用实体框架的数据访问层访问数据 我有一个 SearchList 实体 它与搜
  • 如何在没有互联网连接的情况下安装 NuGet 包?

    目前我正在一台不允许访问互联网的虚拟电脑上进行开发 我设法获取 NuGet Tools vsix 将 NuGet 添加到 Visual Studio 2010 但似乎无法找出如何离线部署 NuGet 包 例如 我下载了EntityFrame
  • 使用 MVC 5 和实体框架的 jQuery 数据表

    我需要一些关于在控制器中放入什么内容的指导 以便我可以对 jQuery 数据表使用服务器端处理 我正在使用 MVC 5 和实体框架 示例位于 http datatablesmvc codeplex com documentation htt
  • 实体框架 - 绑定 WPF 树视图控件

    在服务类别表中 ParentCategoryId 是 ServiceCategoryId 它是父类别 我的类别可以有第 n 级层次结构 因此我需要使用树视图控件来呈现它 我怎样才能做到这一点 Thanks 你可以使用分层数据模板 http
  • 缺少 EF ObjectContext.SaveChanges

    我正在一个新项目中使用实体框架 我从一年前就开始使用 EF 今天 我尝试使用 Visual Studio 2008 SP1 和 2010 生成实体数据模型 它正在生成对象上下文属性和实体集 但尚未生成 SaveChanges 方法 我什至尝
  • Linq to 实体使用 `Func` 在生成匿名对象的 select 语句中创建属性

    我正在使用 linq to 实体开发一种简单的文本搜索方法 我想在几个地方重用该方法 看起来有点像这样 IQueryable
  • 将自定义导航属性添加到 OData Web API 控制器

    我有一个 OData v3 Web API 项目 它使用实体框架代码优先模型 主要类别是Coupon 它有一个列表 这实际上是子类型 ItemRequirement 和 BasketRequirement 的 2 元素集合 我希望能够说 o
  • Entity Framework 6 多对多想要插入重复行

    不应该这么难 我准备放弃EF了 我的模型有周刊版本 每个版本可以有许多分类广告 每个分类可以出现在一个或多个版本中 我的模型 public class Classifieds Key DatabaseGenerated DatabaseGe
  • 处理 LINQ sum 表达式中的 null

    我正在使用 LINQ 查询来查找列的总和 并且在少数情况下该值有可能为空 我现在使用的查询是 int score dbContext domainmaps Where p gt p SchoolId schoolid Sum v gt v
  • PL/SQL 过程:如何返回 select 语句?

    我想创建一个存储过程 on ORACLE数据库服务器我的问题是 我不知道如何返回 select 语句 这是程序中应包含的逻辑 输入参数 过滤器1 int 过滤器2 字符串 with cte as select val1 val2 stdde
  • .edmx 文件的用途是什么?

    edmx 文件的用途是什么 阅读 CSDL SSDL 和 MSL 规范 在我看来 edmx 文件仅在设计时使用 我们打算将它与其他 edmx 一起分发吗 看来我们需要分发 ssdl 和 或 csdl 文件 EDMX 是 Visual Stu
  • 如何使用实体框架选择单个列?

    有没有办法使用 Entity Framework 4 获取单个列的全部内容 与此 SQL 查询相同 SELECT Name FROM MyTable WHERE UserId 1 您可以使用 LINQ Select http msdn mi
  • 乐观并发:IsConcurrencyToken 和 RowVersion

    我正在创建将在我的应用程序中使用的默认并发策略 我决定采取乐观的策略 我的所有实体都映射为Table per Type TPT 使用继承 我很快了解到 在实体框架上使用带有继承的 RowVersion 类型的列时存在问题 Product I
  • 使用实体框架、代码优先方法解决结构问题

    我目前正在使用 EF 和代码优先方法从现有系统构建数据库 最好对 核心 类进行最小的更改 因此 我想找到 Structs 和 EF 的解决方法 是否可以以任何方式将 Struct 包装到类中 以便 EF 可以使用此 Struct 中的数据

随机推荐