如何在函数getbyid存储库模式上分配任意数量的参数键? [英] How to assign any number of parameter keys on function getbyid repository pattern ?

查看:76
本文介绍了如何在函数getbyid存储库模式上分配任意数量的参数键?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问题

如何在函数Getbyid Repository模式上分配任意数量的参数键?

我在使用存储库模式泛型的web应用程序上工作

存储库接口getbyid函数如下

public T GetById(int Id)
{
返回dbSet.Find(Id);
}
和接口Igenerics

T GetById(int Id)
假设我不知道传递了多少参数,以便我做什么以及如何调用它

getbyid模型的返回键可能是模型1键或2或3或4等的键。

这样你可以帮我使用动态数据类型或params对象[] keyValues
< code>< / code>
public T GetById(我在这里写的)
{
return dbSet.Find(Id);
}



和界面Igenerics



T GetById(我在这里写的)



当调用getbyid时如何调用它



i需要使用dynamic和params对象[] keyValues


我的尝试:



 public T GetById (我在这里写的)
{
返回dbSet.Find(Id);
}

解决方案

最后我查了一下,Entity Framework不支持集合值参数。这意味着您无法传递多个键值,并期望EF使用任何这些键返回所有对象。您一次只能请求一个密钥。方法重载使得键值数组使用复合键。



您可以编写自定义SQL以使用类似的查询返回多个对象:

 SELECT * 
FROM table
WHERE idColumn IN( values ,. ..)



您可以让EF执行查询,它会将数据重新组合成该表的对象。



在Entity Framework 6中执行原始SQL查询 [ ^ ]

原始SQL查询 - EF6 | Microsoft Docs [ ^


Problem

How to assign any number of parameter keys on function Getbyid Repository pattern ?

I work on web app using repository pattern generics 

in  repository interface getbyid function as following

public T GetById(int Id)
        {
            return dbSet.Find(Id);
        }
and in interface Igenerics

T GetById(int Id)
suppose i dont know how many parameters passing so that what i do and how to call it please 

getbyid return keys for model may be keys for model 1key or 2 or 3 or 4 etc ..

so that can you help me using dynamic datatype or  params object[] keyValues
<code></code>
public T GetById(what i write here)
        {
            return dbSet.Find(Id);
        }


and in interface Igenerics

T GetById(what i write here)

when call getbyid how to call it

i need to use dynamic and params object[] keyValues

What I have tried:

public T GetById(what i write here)
        {
            return dbSet.Find(Id);
        }

解决方案

Last I checked, Entity Framework doesn't support collection valued parameters. That means yeou can't pass in multiple key values and expect EF to return all the objects with any of those keys. You can only request a single key at a time. The method overloads that take arrays of key values are working with composite keys.

You can write custom SQL to return multiple objects using a query something like:

SELECT *
FROM table
WHERE idColumn IN (values, ...)


You can have EF execute the query and it will reconstitute the data into objects for that table.

Execute Raw SQL Query in Entity Framework 6[^]
Raw SQL Queries - EF6 | Microsoft Docs[^]


这篇关于如何在函数getbyid存储库模式上分配任意数量的参数键?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆