小编Rui*_*mba的帖子

使用时出错

我有一个错误

using语句中使用的类型必须可以隐式转换为'System.IDisposable'

在线

using (var context = new EntityContainer())
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Globalization;
using System.Data;
using System.Data.Entity;
using school.usi.susibar.model;

namespace school.usi.susibar.test
{
    class Program
    {

        public static void Main(string []args)
         {
            using (var context = new EntityContainer())
            {

                addOrderStatusType(context);

                Console.ReadLine();
            }
        } 


        private static void addOrderStatusType(EntityContainer context)
        {
            try
            {
                OrderStatusType type = new OrderStatusType
                {
                    Name = "Vyrizeno", 
                    CancelPermission = false, 
                    ChangePermission = false
                };
                context.OrderStatusTypes.Add(type);
                context.SaveChanges();
                Console.WriteLine("Pridano"); …
Run Code Online (Sandbox Code Playgroud)

.net c# database entity-framework-5

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

使用Linq使用C#更新XML

我的XML文件结构

<items>
  <item>
    <itemID>1</itemID>
    <isGadget>True</isGadget>
    <name>Star Wars Figures</name>
    <text1>LukeSkywalker</text1>
  </item>
</items>
Run Code Online (Sandbox Code Playgroud)

通过ITEMID从XML读取数据

XDocument xmlDoc = XDocument.Load(HttpContext.Current.Server.MapPath("data.xml"));
var items = from item in xmlDoc.Descendants("item")
            where item.Element("itemID").Value == itemID
            select new
            {
                itemID = item.Element("itemID").Value,
                isGadget = bool.Parse(item.Element("isGadget").Value),
                name = item.Element("name").Value,
                text1 = item.Element("text1").Value,
             }

foreach (var item in items)
{
     ....
}
Run Code Online (Sandbox Code Playgroud)

如何按itemID更新XML数据?谢谢!

c# xml linq

15
推荐指数
3
解决办法
4万
查看次数

以代码优先方法映射SQL视图

我有一个SQL视图:

WITH DirectReports (ID,ParentFolderID, ParentFolderName,FolderID,FolderName,OwnerOCID,OwnerArName,OwnerEnName,FolderType,LEVEL)
                            AS
                            (
SELECT        e.Id AS ID,cast(cast(0 AS binary) AS uniqueidentifier) AS ParentFolderID, cast('MainFolder - ' + MainFolders.enName AS nvarchar(250)) AS ParentFolderName, 
                         e.Id AS FolderID, e.Name AS FolderName, WorkSpaces.Owner_Id AS OwnerOCID, OrgCharts.arName AS OwnerArName, OrgCharts.enName AS OwnerEnName, 
                         MainFolders.Type AS FolderType, 0 AS LEVEL
FROM            WorkSpaceFolders AS e INNER JOIN
                         MainFolders ON MainFolders.RootFolder_Id = e.Id INNER JOIN
                         WorkSpaces ON WorkSpaces.Id = MainFolders.WorkSpace_Id INNER JOIN
                         OrgCharts ON OrgCharts.Id = WorkSpaces.Owner_Id
WHERE        e.Root = 1 AND e.Parent_Id IS NULL …
Run Code Online (Sandbox Code Playgroud)

entity-framework ef-code-first

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

创建Linq查询时出错

我有一个像这样的查询

struct MyStruct
{
  public string name;
  public double amount;
}

var a =
  from p in Products
  select new MyStruct
  {
    name = p.Name,
    amount = p.Amount
  };
Run Code Online (Sandbox Code Playgroud)

当我执行查询时,我得到以下异常:

System.NotSupportedException {"LINQ to Entities中仅支持无参数构造函数和初始值设定项."}

但是,如果我将MyStruct的类型更改为类,那么它将按预期工作.

为什么它适用于并且使用struct失败?

.net c# linq linq-to-objects entity-framework

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

Azure Devops上的Nuget还原失败,并显示消息"无法加载源的服务索引"

我有一个在私有代理中运行的.NET解决方案的构建.该解决方案包含.NET Core 2.1和.NET Standard 2.0项目.

安装的一些nuget包如下:

  • NETStandard.Library v2.0.3
  • Microsoft.AspNetCore.Mvc v2.0.0
  • Microsoft.NETCore.App v2.1.5

尝试使用以下错误恢复nuget包时,构建失败:

"F:\ Agent01\w\141\s\xxxxxxx.sln"(恢复目标)(1) - >(恢复目标) - > C:\ Program Files\dotnet\sdk\2.1.500\NuGet.targets(114 ,5):错误:无法加载源https://xxxxxxxxxx.pkgs.visualstudio.com/_packaging/xxxxxxxxxx/nuget/v3/index.json的服务索引.C:\ Program Files\dotnet\sdk\2.1.500\NuGet.targets(114,5):错误:响应状态代码不表示成功:401(未授权).

构建任务如下:

Nuget恢复构建任务

这是%appdata%\NuGet\nuget.config构建代理中的文件内容:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
    <add key="MyFeed" value="https://xxxxxxxxxx.pkgs.visualstudio.com/_packaging/xxxxxxxxxx/nuget/v3/index.json" />
  </packageSources>
  <packageSourceCredentials>
    <MyFeed>
      <add key="Username" value="LocalBuildAgent" />
      <add key="ClearTextPassword" value="xxxxxxxxxxx" />
    </MyFeed>
  </packageSourceCredentials>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我已经检查了一些类似的问题,但到目前为止,我无法找到解决问题的方法.

一些说明:

  • 个人访问令牌未过期
  • 此特定构建在其他构建代理中成功运行
  • 至少有一个带有" nuget restore "任务的构建使用此代理成功运行(常规nuget还原任务,而不是.NET Core)
  • 尝试重新启动构建代理,但没有成功
  • 尝试在恢复之前指定特定版本的nuget,但没有成功
  • 构建代理中的.NET Core SDK最新版本为2.1.500(已安装多个版本)

我错过了什么?如何解决这个问题?为什么我不能使用dotnet restore命令恢复包? …

c# build-agent nuget .net-core azure-devops

14
推荐指数
5
解决办法
6137
查看次数

无情地比较C#中的字符串

假设我有两个字符串:a和b.为了比较a和被忽略大小写时是否具有相同的值,我总是使用:

// (Assume a and b have been verified not to be null)

if (a.ToLower() == b.ToLower())
Run Code Online (Sandbox Code Playgroud)

但是,使用Reflector,我在.NET Framework中已经看过几次:

// (arg three is ignoreCase)

if (string.Compare(a, b, true) == 0)
Run Code Online (Sandbox Code Playgroud)

我测试哪个更快,每次用我使用的字符串ToLower()节拍Compare().

是否有理由Compare()而不是ToLower()?有什么不同的CultureInfo?我在挠头.

.net c# string string-comparison

13
推荐指数
2
解决办法
7993
查看次数

DbContext已经处理掉并且是autofac

我有一个控制器:

private readonly ILogger _logger;    
private readonly IRepository _repository;

public HomeController(ILogger logger, IRepository repository)
{
   _logger = logger;
   _repository = repository;
}
Run Code Online (Sandbox Code Playgroud)

这是存储库:

public class EfRepository : IRepository
{
    // ...methods for add, delete, update entities
    // ....

    public void Dispose()
    {
         if (this._context != null)
         {
             this._context.SaveChanges();
             (this._context as IDisposable).Dispose();
             this._context = null;
         }
    }
}
Run Code Online (Sandbox Code Playgroud)

最后,IoC中的注册类型:

_builder.RegisterType<Logger>().As<ILogger>();
_builder.RegisterType<EfRepository>().As<IRepository>().WithParameter("context", new PcpContext());
Run Code Online (Sandbox Code Playgroud)

当我运行应用程序时,我收到此错误:

由于已经处理了DbContext,因此无法完成操作.

我试着改变注册EfRepository,如下所示:

_builder.RegisterType<EfRepository>()
   .As<IRepository>()
   .WithParameter("context", new PcpContext()).InstancePerLifetimeScope();
Run Code Online (Sandbox Code Playgroud)

在这种情况下,第一个请求完成,但在尝试打开其他页面时,我再次收到错误.问题出在哪儿?

asp.net-mvc entity-framework autofac entity-framework-5

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

UIWebView捕获响应头

我搜索/搜索了很多,但无法得到如何捕获HTTP响应头的答案UIWebview.假设我在App Launch上的UIWebview中重定向到用户注册网关(已经处于活动状态),当用户完成注册时,应该通过在HTTP响应标头中传回的注册时分配给用户的成功唯一ID来通知应用程序. .

有没有直接的方法来捕获/打印HTTP响应头UIWebview

iphone response uiwebview http-headers ios

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

项目“ ClassLibrary1.csproj”的目标是“ netcoreapp2.1”。面向'.NETFramework,Version = v4.7.2'的项目无法引用它

我有两个具有以下设置的类库项目:

  • ClassLibrary1->目标框架-> .NET Core 2.1
  • ClassLibrary2->目标框架-> .NET Framework 4.7.2

现在,我在ClassLibrary2项目中引用了ClassLibrary1项目。已成功完成。但是在重建项目时出现错误:

严重性代码说明项目文件行抑制状态错误项目'.. \ ClassLibrary1 \ ClassLibrary1.csproj'目标为'netcoreapp2.1'。面向'.NETFramework,Version = v4.7.2'的项目无法引用它。ClassLibrary2

谁能帮助我知道此错误的原因?

.net c# .net-core-2.0

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

在.NET Web API中设置JSON序列化的最大深度

假设我有这些关系的权利:这只是一个虚构的例子,而不是我现在的实体.

  • 课程
  • 用户
  • NewsPosts

课程有很多用户,用户有很多课程

课程有很多NewsPosts,NewsPosts有很多课程

用户有很多NewsPosts,NewsPosts有很多用户

我首先使用.NET Web API实现实体框架代码,它以JSON的形式发回实体.当我尝试获取一个课程时,它会发回一个带有entites关系的JSON结果,这很好,但我希望设置一个限制它序列化的级别,所以它不会序列化所有关系超出第一个或二级.

GET课程/将序列化为:

   {
     "Users":[{
                "id":1,
                "newsPosts": [{
                                "id":1,
                                "message":"foo"
                             }]
             }],
   "newsPosts":[{
                 "id":2,
                 "message":"bar"
               }]   

   }
Run Code Online (Sandbox Code Playgroud)

我想要的是仅序列化1个或2个级别,结果将是:

   {
     "Users":[{
                "id":1,
                "newsPosts": []
             }],
   "newsPosts":[{
                 "id":2,
                 "message":"bar"
               }]   

   }
Run Code Online (Sandbox Code Playgroud)

我添加了一个:

    json.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
Run Code Online (Sandbox Code Playgroud)

这是删除referencelooping.

简而言之:有没有办法设置最大数量的节点来序列化?

.net serialization json asp.net-web-api

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