[英]WebAPI Entity Framework DB first with Web API OData controller: Issue with Model properties aliasing
[英]Cannot access entity having int key from base controller (Odata WebAPI)
我有一个基本控制器,它具有以下Get方法:
[Enable query]
public T Get([FromOdataURI]string key)
{
entity=GetDbSet().Find(key);
}
我无法修改find方法。 它是一种从元数据文件派生的方法。
问题在于Get方法接受键作为字符串。 因此,如果访问具有字符串主键的实体,
例如: http:// hostname / service-name / employee ('3000200')(此处的“ 3000200”在数据库中为nvarchar类型),
调用基本控制器,并且在基本控制器中定义的get方法将字符串主键与数据库中的字符串值进行比较。
但另一方面,如果访问具有整数键的实体,
例如: http:// hostname / service-name / product(2) (此处2在数据库中为整数类型),
基本控制器被调用,并且Get方法仍将键作为字符串,并且当代码将字符串键值与数据库中的整数键值进行比较时,它抛出一条错误,指出“参数类型Edm.String和Edm.Int不兼容” 。 我不想为没有主键作为字符串的实体创建单独的控制器。 如何在基本控制器的Get方法中处理不同的关键数据类型?
在基类中添加第二个type参数,以指定键的类型。
public class BaseController<TKey, TEntity> : ODataController
{
public TEntity Get([FromODataUri] TKey key)
{
return GetDbSet().Find(key);
}
}
当然,此方法要求定义Find(TKey)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.