Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 将IEnumerable从web api控制器发送到angular js_Angularjs_Linq_Http_Asp.net Web Api_Get - Fatal编程技术网

Angularjs 将IEnumerable从web api控制器发送到angular js

Angularjs 将IEnumerable从web api控制器发送到angular js,angularjs,linq,http,asp.net-web-api,get,Angularjs,Linq,Http,Asp.net Web Api,Get,我正在尝试将IEnumerable从web api控制器发送到AngularJs控制器。 我使用的代码是 Web Api: readonly InventoryEntities _db = new InventoryEntities(); public IEnumerable<FDVOEligibilityRequest> Get() { return _db.FDVOEligibilityRequests.AsEnumerable(); } 这很好,但是现在我使用linq

我正在尝试将IEnumerable从web api控制器发送到AngularJs控制器。 我使用的代码是

Web Api:

readonly InventoryEntities _db = new InventoryEntities();

public IEnumerable<FDVOEligibilityRequest> Get()
{
   return _db.FDVOEligibilityRequests.AsEnumerable();
}
这很好,但是现在我使用linq来包含相关的表,但它不起作用。angularJs代码是相同的。 我做错了什么

readonly InventoryEntities _db = new InventoryEntities();

public IEnumerable<FDVOEligibilityRequest> Get()
{
    return _db.FDVOEligibilityRequests
        .Include("FDVOEligibilityRequestMandatoryField")
        .Include("FDVOEligibilityRequestDCCField").AsEnumerable();
}

如果它是500并且发生在您成功地从您的操作返回之后,那么它可能是序列化期间的异常

我建议检查FDVOEligibilityRequest和FDVOELIGIBILITYREQUESTMANDTORYELD/FDVOELIGIBILITYREQUESTDCFELD之间是否没有循环引用

或者尝试使用以下代码对其进行诊断:

字符串序列化(MediaTypeFormatter格式化程序,T值)
{
//创建一个虚拟HTTP内容。
Stream=新的MemoryStream();
var内容=新的流内容(流);
///序列化对象。
WriteToStreamAsync(typeof(T),value,stream,content,null).Wait();
//读取序列化的字符串。
流位置=0;
返回content.ReadAsStringAsync().Result;
}
试一试{
var val=_db.fdvoelibilityRequests
.包括(“FDVOEligibilityRequestMandatoryField”)
.Include(“FDVOEligibilityRequestDCCField”).AsEnumerable();
var str=Serialize(新的JsonMediaTypeFormatter(),val);
}
捕获(异常x)
{//这里是断点
}

ps:在这种情况下,最重要的是使用DTO而不是EF对象,比如。

如果是500,并且发生在您成功地从操作返回之后,那么在序列化过程中它可能是一个异常

我建议检查FDVOEligibilityRequest和FDVOELIGIBILITYREQUESTMANDTORYELD/FDVOELIGIBILITYREQUESTDCFELD之间是否没有循环引用

或者尝试使用以下代码对其进行诊断:

字符串序列化(MediaTypeFormatter格式化程序,T值)
{
//创建一个虚拟HTTP内容。
Stream=新的MemoryStream();
var内容=新的流内容(流);
///序列化对象。
WriteToStreamAsync(typeof(T),value,stream,content,null).Wait();
//读取序列化的字符串。
流位置=0;
返回content.ReadAsStringAsync().Result;
}
试一试{
var val=_db.fdvoelibilityRequests
.包括(“FDVOEligibilityRequestMandatoryField”)
.Include(“FDVOEligibilityRequestDCCField”).AsEnumerable();
var str=Serialize(新的JsonMediaTypeFormatter(),val);
}
捕获(异常x)
{//这里是断点
}

ps:在这种情况下,最重要的是使用DTO而不是像这样的EF对象。

什么不起作用?您会得到什么而不是预期的结果?我在anular侧得到一个错误您的返回类型对于新旧Web Api控制器都是相同的,但是在新的Web Api控制器中您是否添加了属性?我想问的是,您的模型FDVOEligibilityRequest是否仍然是包含语句的有效模型?这就是FDVOEligibilityRequest在新的Web Api控制器公共部分类FDVOEligibilityRequest{public int Id{get;set;}public string TestName{get;set;}public string GroupName中的样子{get;set;}public int MandatoryFieldsID{get;set;}public int DCCFieldsID{get;set;}public virtual FDVOEligibilityRequestMandatoryField FDVOEligibilityRequestMandatoryField{get;set;}public virtual FDVOEligibilityRequestDCCField FDVOEligibilityRequestDCCField{get;set;}什么不起作用意味着什么?你得到了什么而不是预期的结果?我得到了一个错误。你的返回类型对于新旧Web Api控制器都是相同的,但是在新的Web Api控制器中,你是在添加属性吗?我问的是,你的模型FDVOEligibilityRequest是否仍然是包含语句的有效模型?这是在新的Web Api controllerpublic部分类中,FDVOEligibilityRequest类似于FDVOEligibilityRequest{public int Id{get;set;}public string TestName{get;set;}public string GroupName{get;set;}public int MandatoryFieldsID{get;set;}public int DCCFieldsID{get;set;}公共虚拟FDVOEligibilityRequestMandatoryField FDVOEligibilityRequestMandatoryField{get;set;}公共虚拟FDVOEligibilityRequestDCCField FDVOEligibilityRequestDCCField{get;set;}
readonly InventoryEntities _db = new InventoryEntities();

public IEnumerable<FDVOEligibilityRequest> Get()
{
    return _db.FDVOEligibilityRequests
        .Include("FDVOEligibilityRequestMandatoryField")
        .Include("FDVOEligibilityRequestDCCField").AsEnumerable();
}
public partial class FDVOEligibilityRequest
{
    public int Id { get; set; }
    public string TestName { get; set; }
    public string GroupName { get; set; }
    public int MandatoryFieldsID { get; set; }
    public int DCCFieldsID { get; set; }
    public virtual FDVOEligibilityRequestMandatoryField FDVOEligibilityRequestMandatoryField { get; set; }
    public virtual FDVOEligibilityRequestDCCField FDVOEligibilityRequestDCCField { get; set; }
}
string Serialize<T>(MediaTypeFormatter formatter, T value)
{
    // Create a dummy HTTP Content.
    Stream stream = new MemoryStream();
    var content = new StreamContent(stream);
    /// Serialize the object.
    formatter.WriteToStreamAsync(typeof(T), value, stream, content, null).Wait();
    // Read the serialized string.
    stream.Position = 0;
    return content.ReadAsStringAsync().Result;
}

try {
    var val = _db.FDVOEligibilityRequests
        .Include("FDVOEligibilityRequestMandatoryField")
        .Include("FDVOEligibilityRequestDCCField").AsEnumerable();
    var str = Serialize(new JsonMediaTypeFormatter(), val);
}
catch (Exception x) 
{ // break point here
}