小编Vit*_*nko的帖子

为什么使用Attach for update Entity Framework 6?

在搜索通过EF执行CRUD操作的最佳实践时,我注意到强烈建议在更新实体之前使用Attach()或使用Find()方法.它工作得很好,根据EF文档,这些方法将实体提取到上下文中,这对我来说非常清楚.但是followind代码让我很困惑

public void Update(object entity)
{
    Record record = new Record() {
        id = 1,
        value = 5
    };
    using (SomeContext ctx = new SomeContext())
    {
        ctx.Entry(record).State = EntityState.Modified;
        ctx.SaveChanges();
    }
}
Run Code Online (Sandbox Code Playgroud)

假设我们在数据库中有一个id = 1的记录.在这种情况下,上面的代码将更新记录(将值设置为5).问题是为什么它有效?然后我为什么要使用Attach()?据我所知,记录并未以任何方式附加到上下文中.我读到的有关章节本书和教程,但他们使用2查询的方法.我也上了SO,但没有找到我的问题的答案.请帮我解释一下或好一些好的东西.

c# entity-framework crud

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

如何使用Razor通过循环正确生成引导网格?

我使用ASP.NET MVC和bootstrap.我在集合中有很多对象(> 2),每个需要一个<div class="col-xs-6">但是连续只有2个col.如何使用循环来实现这个目标?有一种方法,但我正在寻找更好的东西:

@model List<Object>
@using (Html.BeginForm("ActionName", "ControllerName"))
{
    <div class="row">
    @for (int i = 0; i < Model.Count; i++)
    {
        if (i % 2 != 0) {
        <div class="row">
            <div class="col-xs-6">
                @Html.TextBoxFor(o => o[i].Value)
            </div>
        </div>
        } else {
            <div class="col-xs-6">
            @Html.TextBoxFor(o => o[i].Value)
            </div>
        }
    }
    </div>
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc razor twitter-bootstrap

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

无法将任务&lt;List&lt;TEntity&gt;&gt; 转换为任务&lt;IList&lt;TEntity&gt;&gt;

我正在围绕 EF Core 编写一个小包装方法DbSet。我有以下方法:

public Task<IList<TEntity>> GetAsync(Func<IQueryable<TEntity>, IQueryable<TEntity>> getFunction)
{
    if (getFunction == null)
    {
        Task.FromResult(new List<TEntity>());
    }
    return getFunction(_dbSet).AsNoTracking().ToListAsync();
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,该类是通用的,并且 _dbSet 是DbSet上下文中具体的实例。然而,对于这个问题来说,这并不重要。
对于代码我得到以下错误:

[CS0029] 无法将类型“System.Threading.Tasks.Task>”隐式转换为“System.Threading.Tasks.Task>”

如果我将返回值更改为Task<List<TEntity>>则不会出现错误。
有谁知道为什么它不能转换它?谢谢!

c# asynchronous covariance contravariance async-await

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

什么时候应该对接口使用圆圈表示法

根据 UML Superstruction 规范 v2.4,UML 类图中的接口有两种不同的表示法。其中一个是普通的盒子,上面有“接口”字样和名称,另一个是上面有名称的圆圈(鲍勃叔叔称之为棒棒糖)。
问题是 - 什么时候应该使用圆圈表示法?是否适合实现该接口的类仅在接口中定义公共方法的情况?因此,如果它仅通过接口使用 - 接口中设置的方法是显而易见的,也许我可以使用这个圆圈符号。请帮我解决这个问题。规范对半圆表示法非常清楚,但对圆则不清楚。

uml class-diagram

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

安装具有自制软件和 php 7.3 的 ssh2 扩展

我在尝试ssh2使用 pecl安装扩展时遇到以下错误:

17 warnings and 3 errors generated.
make: *** [ssh2_fopen_wrappers.lo] Error 1
ERROR: `make' failed
Run Code Online (Sandbox Code Playgroud)

这是我所做的:

brew install php
brew install libssh2
pecl install ssh2-1.1.2
Run Code Online (Sandbox Code Playgroud)

那安装了 php 7.3.3,libssh2 1.8.0 并且无法安装 ssh2-1.1.2。
有没有人有解决问题的方法?谢谢!

相关链接:
https : //github.com/docker-library/php/issues/767
为 PHP 安装 PECL SSH2 扩展

homebrew pecl libssh2 ssh2 php-7.3

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

通过静态类访问 HttpContext 可以“正确”处理不同的请求

我在尝试解决需要非控制器中的一些标头的问题时发现了这篇文章
我对这种方法持怀疑态度,作者没有回应。我主要关心的是使用 global static 的方法HttpContext。我在想它不应该处理两个请求。这种情况的一个例子如下(连同我提到的文章中介绍的方法):

public static class AppContext
{
    public static IHttpContextAccessor HttpContextAccessor { get; set; }
    public static void Configure(IHttpContextAccessor accessor)
    {
        HttpContextAccessor = accessor;
    }
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env,
    IHttpContextAccessor contextAccessor)
{
    AppContext.Configure(contextAccessor);
    ...
}

[Route("api/[controller]")]
[ApiController]
public class ExampleController : ControllerBase
{
    [HttpGet("{number}")]
    public IActionResult Example(int number)
    {
        if (number == 1)
        {
            Thread.Sleep(10000);
        }

        var result = AppContext.HttpContextAccessor.HttpContext.Request.GetDisplayUrl();

        return Ok(result + " " + number);
    } …
Run Code Online (Sandbox Code Playgroud)

c# httpcontext static-classes asp.net-core

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

如何在 asp.net core 3.1 中设置 nodatime json 序列化程序

我试图弄清楚如何在 ASP.NET Core 3.1 Web Api 项目中设置 NodaTime JSON 序列化。这里描述的方式对我不起作用

services.AddJsonFormatters(settings => settings.ConfigureForNodaTime(DateTimeZoneProviders.Tzdb));
Run Code Online (Sandbox Code Playgroud)

因为没有像AddJsonFormatterson这样的方法services : IServiceCollection
安装的软件包:

NodaTime v 3.0.3  
NodaTime.Serialization.JsonNet v 3.0.0
Microsoft.AspNetCore.Mvc.NewtonsoftJson v 3.1.9
Newtonsoft.Json v 12.0.3
Run Code Online (Sandbox Code Playgroud)

你能帮我解决这个问题吗?我应该在 Startup.cs 中使用什么方法来配置 NodaTime?

c# nodatime asp.net-core-3.1

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

使用DataSource C#时在下拉列表中添加空值

我正在尝试创建一个过滤器DropDownList.
他们正在使用数据源.
问题是 - 这些来源不包含空值,过滤器始终有效.我当然不需要它.我试图添加ListItem正确DropDownList但但它没有帮助.

这是我的一个DropDownList.

<asp:DropDownList ID="ddl" runat="server" DataSourceID="sds"
     DataTextField="name" DataValueField="id">
</asp:DropDownList>                                
<asp:SqlDataSource ID="sds" runat="server" 
     ConnectionString="<%$ ConnectionStrings:conStr %>" 
     OnInit="sds_Init"></asp:SqlDataSource>>
Run Code Online (Sandbox Code Playgroud)

将不胜感激!

c# asp.net drop-down-menu dropdown

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