无法建立连接,因为目标机器主动拒绝 127.0.0.1:63591

No connection could be made because the target machine actively refused it 127.0.0.1:63591

这几天一直在搞这个,累坏了。我在整个 Whosebug 中进行了搜索,但我尝试过的所有方法都没有用。

我在本地机器上 运行 它并使用 SQL Management Studio 2016 作为我的 SQL 数据库。

我为解决此问题所做的工作是:

如果你能帮助我那就太好了

您确定您的数据库实例是运行吗?在你的 SQL 服务器的配置管理器和默认端口中检查它。

之后,与您的网络配置连接字符串中的端口号进行比较。

<connectionStrings>
<clear/>
<add name="xxxxx" connectionString="metadata=res://*/xxxx.csdl|res://*/xxx.ssdl|res://*/xxx.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.\xxxxxx;Initial Catalog=xx;Persist Security Info=True;User ID=yyy;Password=yyyy;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient"/></connectionStrings>

所以,在我调试了你的代码之后,我发现了你的解决方案中的问题。

1-**此问题的第一个原因是 **"Self referencing loop detected for property",因为您正在尝试直接序列化 Entity Framework 对象public IQueryable GetFoods()。由于 Food 有 MealFood 并且 MealFood 有对 Food 的引用,所以它不能被序列化。

解决方案是在您的 Global.asax 中添加此代码 GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;

你的方法将是这样的:

protected void Application_Start(){ GlobalConfiguration.Configure(WebApiConfig.Register); GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore; }

这里我们需要为JSON.Net序列化器定义全局设置以忽略循环引用。

2-**第二题是**"The entity or complex type 'Model' cannot be constructed in a LINQ to Entities query".

要解决这个问题,您可以像这样创建食物 Class 的伪 Class 一:

public class PseudoFood
{
public int FoodID { get; set; }
public string FoodName { get; set; }
public int Calories { get; set; }
public string Notes { get; set; }
}

在可以使用此方法查询您的数据库之后。

public IQueryable<PseudoFood> GetFoods()
{    
      return (from a in db.Foods
                    orderby a.FoodName descending
                    select new PseudoFood()
                    {
                        FoodName = a.FoodName,
                        FoodID = a.FoodID,
                        Calories = a.Calories,
                        Notes = a.Notes
                    }
             ).AsQueryable();    
}

返回 PseudoFood "IQueryable" 并最终检索您的记录。