小编nik*_*klr的帖子

如何将OData查询与DTO映射到另一个实体?

我的问题与此问题非常类似:如何将针对DTO的OData查询映射到EF实体? 我有一个简单的设置来测试ASP.NET Web API OData V4 $过滤器功能.我想做的是"别名"ProductDTO的一些属性以匹配Product实体的属性.用户将使用以下请求调用ProductsController:

GET产品?$ filter = DisplayName eq'test'

产品类:

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Level { get; set; }
    public Product()
    { }
}
Run Code Online (Sandbox Code Playgroud)

ProductDTO类:

public class ProductDTO
{
    public int Id { get; set; }
    public string DisplayName { get; set; }
    public int DisplayLevel { get; set; }
    public ProductDTO(Product product)
    {
        this.DisplayName = product.Name;
        this.DisplayLevel = product.Level; …
Run Code Online (Sandbox Code Playgroud)

c# odata asp.net-web-api

12
推荐指数
3
解决办法
1万
查看次数

WebAPI - 属性路由POST不能与WebAPI Cors一起使用?

我有以下控制器,它应该接受用户名和密码作为POST中的有效负载.如果我将其更改为HttpGet它可以工作.

[RoutePrefix("api")]
public class AccountController : ApiController
{
    [HttpPost("login/{username}/{password}")]
    [AcceptVerbs("POST")]
    public Login Login(string username, string password)
    {
        Login login = new Login();
        if (username == "user" && password == "pw") login.Success = true;
        else login.Success = false;
        return login;
    }
}
Run Code Online (Sandbox Code Playgroud)

OPTIONS请求可以通过,但POST失败.

在此输入图像描述

选项标题:

在此输入图像描述

选项回复:

在此输入图像描述

POST标题:

在此输入图像描述

POST响应:

在此输入图像描述

知道我做错了什么吗?

post cors asp.net-web-api

11
推荐指数
1
解决办法
1万
查看次数

Web API OData inlinecount未映射

我的问题类似于:web-api-odata-inlinecount-not-working

我安装了以下软件包:

<packages>
  <package id="Microsoft.AspNet.Cors" version="5.0.0-rc1" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.Client" version="5.0.0-rc1" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.Core" version="5.0.0-rc1" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.Cors" version="5.0.0-rc1" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.OData" version="5.0.0-rc1" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.SelfHost" version="5.0.0-rc1" targetFramework="net45" />
  <package id="Microsoft.Data.Edm" version="5.6.0" targetFramework="net45" />
  <package id="Microsoft.Data.OData" version="5.6.0" targetFramework="net45" />
  <package id="Newtonsoft.Json" version="5.0.6" targetFramework="net45" />
  <package id="System.Spatial" version="5.6.0" targetFramework="net45" />
</packages>
Run Code Online (Sandbox Code Playgroud)

api是自动主机,启用了cors和属性路由.

// used for development purpose only
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);

// enables attribute routing
config.MapHttpAttributeRoutes();
Run Code Online (Sandbox Code Playgroud)

ProductController的方法GetAllProducts:

[Queryable]
[HttpGet("products")]
public PageResult<ProductViewModel> …
Run Code Online (Sandbox Code Playgroud)

c# json asp.net-web-api

8
推荐指数
1
解决办法
2330
查看次数

过滤IEnumerable

我有3个类,具有以下属性:

OfferList类:

Guid Id
IEnumerable<Offer> Offers
Run Code Online (Sandbox Code Playgroud)

优惠等级:

Guid Id
Product Product
bool IsSealed
Run Code Online (Sandbox Code Playgroud)

产品类别:

Guid Id
Run Code Online (Sandbox Code Playgroud)

OfferList包含多个Offer,而Offer具有精确的1个产品.

如何过滤OfferList以仅包含未密封的商品?

OfferList offerList = this.GetOfferList(id).Offers.Where(o => !o.IsSealed));
Run Code Online (Sandbox Code Playgroud)

这将返回一个类型为Offer的IEnumerable,而不是过滤OfferList.

c# filtering

7
推荐指数
1
解决办法
2万
查看次数

在edmx文件中手动添加存储过程

是否可以在edmx文件中持久添加手动添加的存储过程?数据库是从模型生成的.每次我在edmx文件中的编辑器中更改某些内容时,存储过程都会丢失.之后只有FunctionImport条目可用.

示例函数如下所示:

<Function Name="SP_I_InsertGroup" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo">
    <Parameter Name="name" Type="nvarchar" Mode="In" />
    <Parameter Name="chiefId" Type="int" Mode="In" />
    <Parameter Name="description" Type="nvarchar" Mode="In" />
    <Parameter Name="parentId" Type="int" Mode="In" />
    <Parameter Name="mode" Type="char" Mode="In" />
</Function>
Run Code Online (Sandbox Code Playgroud)

相应的FunctionImportMapping:

<FunctionImportMapping FunctionImportName="InsertGroup" FunctionName="DAL.Store.SP_I_InsertGroup" />
Run Code Online (Sandbox Code Playgroud)

FunctionImport:

<FunctionImport Name="InsertGroup" ReturnType="Collection(Int32)">
    <Parameter Name="name" Mode="In" Type="String" />
    <Parameter Name="chiefId" Mode="In" Type="Int32" />
    <Parameter Name="description" Mode="In" Type="String" />
    <Parameter Name="parentId" Mode="In" Type="Int32" />
    <Parameter Name="mode" Mode="In" Type="String" />
</FunctionImport>
Run Code Online (Sandbox Code Playgroud)

c# stored-procedures edmx

5
推荐指数
1
解决办法
6461
查看次数

具有泛型类属性的LINQ表达式

我想将一个IQueryable和一组id传递给一个方法,该方法根据这些id过滤IQueryable.

由于id可以是long或int,因此应该通常解决.

我想出了以下内容:

public static IEnumerable<T> GetModified<TId, T>(IQueryable<T> objects, TId[] ids) where T : class
{
        return objects.Where(j => ids.Contains((TId)j.GetType().GetProperty("Id").GetValue(j)));
}
Run Code Online (Sandbox Code Playgroud)

不幸的是我得到了例外:

LINQ to Entities无法识别方法'System.Object GetValue(System.Object)'方法,并且此方法无法转换为存储表达式.

c# linq generics lambda

4
推荐指数
1
解决办法
3447
查看次数

具有泛型属性的LINQ表达式

我的问题与这个问题有关:linq-expression-with-generic-class-properties

这次我想得到新创建的具有共同id的对象.id实际上是外键,因此可以有不同的名称.

我想出了以下内容:

public static IEnumerable<T> GetNew<TId, T>(IQueryable<T> objects, TId id, DateTime date, Expression<Func<T, TId>> idSelector) 
    where T : class, ISyncable<TId>
{
    return objects.Where(o => idSelector(o) == id && o.CreatedDate > date);
}
Run Code Online (Sandbox Code Playgroud)

该方法将被调用如下:

var modified = GetNew(dbObjects, id, date, entity => entity.PersonId);
Run Code Online (Sandbox Code Playgroud)

不幸的是我得到了错误:

'idSelector' is a variable but is used like a method.
Run Code Online (Sandbox Code Playgroud)

传递给方法的表达式应该是这样的:

objects.Where(o => o.PersonId == id && o.CreatedDate > date);
Run Code Online (Sandbox Code Playgroud)

c# linq generics lambda

3
推荐指数
1
解决办法
2835
查看次数

使用GUID进行单元测试

是否可以使用手动定义的值创建GUIDS?

我需要提前知道GUID的值来进行一些单元测试.

.net c# unit-testing guid

2
推荐指数
1
解决办法
2528
查看次数

使用实体框架在SQL中选择UNTIL

我想选择行,直到我找到一个数字的Id.如果我的数据按Id排序,问题可以很容易地解决.

Id    Name
-----------
1     Bob
2     Eve
3     Alice
4     Michael
5     Anne
6     Mike
Run Code Online (Sandbox Code Playgroud)

要获取所有项目,直到找到Id 4,以下SQL语句就足够了:

SELECT * FROM Users WHERE Id <= 4
Run Code Online (Sandbox Code Playgroud)

如果数据按名称排序,我仍然希望获得项目,直到找到Id 4,我无法找到一个好的解决方案.

Id    Name
-----------
3     Alice
5     Anne
1     Bob
2     Eve
4     Michael
6     Mike
Run Code Online (Sandbox Code Playgroud)

要定义的语句的输出应该是:

Id    Name
-----------
3     Alice
5     Anne
1     Bob
2     Eve
4     Michael
Run Code Online (Sandbox Code Playgroud)

编辑1:

使用以下语句,输出几乎是我需要的,但缺少Id 4的项目.

queryable.OrderBy(o => o.Name).TakeWhile(o => o.Id != 4);

Id    Name
-----------
3     Alice
5     Anne
1     Bob
2     Eve
Run Code Online (Sandbox Code Playgroud)

是否可以包含Id 4的项目? …

c# sql t-sql linq entity-framework

1
推荐指数
1
解决办法
810
查看次数

从另一个IEnumerable中提取IEnumerable

我有3个类,具有以下属性:

OfferList类:

Guid Id
IEnumerable<Offer> Offers
Run Code Online (Sandbox Code Playgroud)

优惠等级:

Guid Id
Product Product
Run Code Online (Sandbox Code Playgroud)

产品类别:

Guid Id
Run Code Online (Sandbox Code Playgroud)

OfferList包含多个Offer,而Offer具有精确的1个产品.

如何获得包含OfferList的所有产品的IEnumerable?

OfferList offerList = this.GetOfferList(id);
IEnumerable<Product> products = offerList.Offers.SelectMany?
Run Code Online (Sandbox Code Playgroud)

c# entity-framework

0
推荐指数
1
解决办法
87
查看次数

使用twitter bootstrap防止子元素崩溃

我有以下列表:

    • Child1
    • CHILD2

根应该是可折叠的,但不是孩子.如果单击其中一个代码,则以下代码将崩溃.如何防止儿童瘫倒?

<li data-toggle="collapse" data-target="#root"><a href="#">Root</a>
    <ul class="nav nav-list collapse" id="root">
        <li><a href="some_url">Child1</a></li>
        <li><a href="some_url">Child2</a></li>
    </ul>
</li>
Run Code Online (Sandbox Code Playgroud)

编辑:更好地描述我想要的方法.

  1. Root从一开始就崩溃了.如果我点击root它应该显示孩子(使用上面的代码),如果我再次点击root它应该隐藏孩子(也可以)
  2. 显示孩子后,我点击一个孩子.此单击将触发折叠并再次隐藏子项.(这是我想要防止的)

jsfiddle:http://jsfiddle.net/MgcDU/4537/

html javascript collapse twitter-bootstrap

0
推荐指数
1
解决办法
1737
查看次数