Entity framework 实体框架&x2B;Sql Anywhere 11+;存储过程

Entity framework 实体框架&x2B;Sql Anywhere 11+;存储过程,entity-framework,sqlanywhere,Entity Framework,Sqlanywhere,在过去的几天里,我一直在和EF比赛。 我们的应用程序基于SQL Anywhere 10数据库,所有数据访问都是通过存储过程完成的。由于SA 10不支持EF,因此我正在使用SA 11测试EF。 为此,我创建了一个包含两个表和两个存储过程的小型数据库(基于asp.net mvc示例中的nerddinner数据库,请参阅) 我已经从数据库、表和存储过程中创建了一个模型,并进行了必要的函数导入。 我有一个具有以下签名的存储过程: ALTER PROCEDURE "DBA"."get_dinner"( @

在过去的几天里,我一直在和EF比赛。 我们的应用程序基于SQL Anywhere 10数据库,所有数据访问都是通过存储过程完成的。由于SA 10不支持EF,因此我正在使用SA 11测试EF。 为此,我创建了一个包含两个表和两个存储过程的小型数据库(基于asp.net mvc示例中的nerddinner数据库,请参阅) 我已经从数据库、表和存储过程中创建了一个模型,并进行了必要的函数导入。 我有一个具有以下签名的存储过程:

ALTER PROCEDURE "DBA"."get_dinner"( @dinner_id integer)
BEGIN
select dinner_id, title, event_date, description, hosted_by , contact_phone, address, country, latitude, longitude
from dba.dinners d
where d.dinner_id = @dinner_id
END
生成的函数导入代码如下所示:

public global::System.Data.Objects.ObjectResult<dinner> get_dinner(global::System.Data.Objects.ObjectParameter dinner_id)
{
    return base.ExecuteFunction<dinner>("get_dinner", dinner_id);
}
public ObjectResults<dinner> get_dinner(int dinner_id);
我是不是遗漏了什么?要使函数导入具有正确的参数类型,还需要什么?这是您可以通过调整edmx文件来纠正的问题,还是SA11 EF支持实现的问题


希望有人能给我一些进一步的线索。

这是函数导入的InOut参数和代码生成器的已知问题

我们一直在讨论让InOut参数生成如下代码:

public ObjectResults<dinner> get_dinner(ref int dinner_id);
public ObjectResults get_dinner(ref int dinner_id);
而不是你所拥有的

要尝试的一件事是将“InOut”参数转换为“In”参数。然后,CodeGen应该生成如下内容:

public global::System.Data.Objects.ObjectResult<dinner> get_dinner(global::System.Data.Objects.ObjectParameter dinner_id)
{
    return base.ExecuteFunction<dinner>("get_dinner", dinner_id);
}
public ObjectResults<dinner> get_dinner(int dinner_id);
public ObjectResults get_dinner(int dinner_id);
但真正的问题是,如果你叫它,它会起作用吗

希望这个背景有帮助

干杯


亚历克斯

谢谢你的回答。我将尝试修改edmx文件,看看它是否有效。函数导入,因为它是目前产生的工作,它是唯一的参数类型,困扰我。它的工作。希望inout参数的问题很快就能解决。