小编Ant*_*rim的帖子

"预期的锁定文件不存在.请在我完成后立即运行"dnu restore"

我正在为所有内容运行beta7,包括EF 7.我正在尝试使用ASP.NET 5应用程序模板项目连接到我的远程现有数据库.我的project.json看起来像这样:

{
  "webroot": "wwwroot",
  "userSecretsId": "aspnet5-XXX-409e9e37-b7bb-4185-b7aa-6dc336087524",
  "version": "1.0.0-*",

  "dependencies": {
    "EntityFramework.Commands": "7.0.0-beta7",
    "EntityFramework.SqlServer": "7.0.0-beta7",
    "Microsoft.AspNet.Authentication.Cookies": "1.0.0-beta7",
    "Microsoft.AspNet.Authentication.Facebook": "1.0.0-beta7",
    "Microsoft.AspNet.Authentication.Google": "1.0.0-beta7",
    "Microsoft.AspNet.Authentication.MicrosoftAccount": "1.0.0-beta7",
    "Microsoft.AspNet.Authentication.Twitter": "1.0.0-beta7",
    "Microsoft.AspNet.Diagnostics": "1.0.0-beta7",
    "Microsoft.AspNet.Diagnostics.Entity": "7.0.0-beta7",
    "Microsoft.AspNet.Identity.EntityFramework": "3.0.0-beta7",
    "Microsoft.AspNet.Mvc": "6.0.0-beta7",
    "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-beta7",
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta7",
    "Microsoft.AspNet.Server.WebListener": "1.0.0-beta7",
    "Microsoft.AspNet.StaticFiles": "1.0.0-beta7",
    "Microsoft.AspNet.Tooling.Razor": "1.0.0-beta7",
    "Microsoft.Framework.Configuration.Abstractions": "1.0.0-beta7",
    "Microsoft.Framework.Configuration.Json": "1.0.0-beta7",
    "Microsoft.Framework.Configuration.UserSecrets": "1.0.0-beta7",
    "Microsoft.Framework.Logging": "1.0.0-beta7",
    "Microsoft.Framework.Logging.Console": "1.0.0-beta7",
    "Microsoft.Framework.Logging.Debug" : "1.0.0-beta7",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-beta7"
  },

  "commands": {
    "web": "Microsoft.AspNet.Hosting --config hosting.ini",
    "ef": "EntityFramework.Commands"
  },

  "frameworks": {
    "dnx451": { },
    "dnxcore50": { }
  },

  "exclude": [ …
Run Code Online (Sandbox Code Playgroud)

c# json entity-framework-core dnx asp.net-core

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

如何从OkNegotiatedContentResult读取/解析内容?

在我的一个API动作(PostOrder)中,我可能正在使用API​​(CancelOrder)中的另一个动作.两者都返回一个JSON格式的ResultOrderDTO类型,设置ResponseTypeAttribute为两个动作的一个,如下所示:

public class ResultOrderDTO
{
    public int Id { get; set; }
    public OrderStatus StatusCode { get; set; }
    public string Status { get; set; }
    public string Description { get; set; }
    public string PaymentCode { get; set; }
    public List<string> Issues { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我需要的是ResultOrderDTO从中读取/解析响应CancelOrder,以便我可以将其用作响应PostOrder.这就是我的PostOrder代码:

// Here I call CancelOrder, another action in the same controller
var cancelResponse …
Run Code Online (Sandbox Code Playgroud)

c# asp.net api asp.net-web-api asp.net-web-api2

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

将当前用户包含在来自控制器的每个服务层调用中

我在我的控制器中执行模型验证,但需要在服务/业务级别进行第二次业务验证.这通常与用户权限有关:当前用户是否可以访问他尝试获取或发布的客户/订单信息?

我的第一个(也是工作的)方法是传递整个User实例或它Id(通过调用User.Identity.GetUserId()),这对于大多数情况来说都是足够的 - 如果不是全部的话.所以我会有这样的事情:

public IHttpActionResult Get(int id)
{
    try
    {
        var customer = customerService.GetById(id, userId);
        return Ok(customer);
    }
    catch (BusinessLogicException e)
    {
        return CreateErrorResponse(e);
    }
}
Run Code Online (Sandbox Code Playgroud)

但我真的不喜欢这样一个事实:通过这种方法,我将不得不在几乎每次调用我的服务层时都包含一个额外的参数.如果我正在调用GetById()方法,我希望通过提供ID来获取内容,而不是ID 用户ID.

一个简单的解决方法是沿着这些方向,这也适用:

public IHttpActionResult Get(int id)
{
    customerService.SetCurrentUser(User.Identity.GetUserId());

    try
    {
        var customer = customerService.GetById(id);
        return Ok(customer);
    }
    catch (BusinessLogicException e)
    {
        return CreateErrorResponse(e);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我不希望单独调用来设置当前用户,而是希望每次调用服务时都自动执行此操作.我该怎么做?

这是我的服务的样子:

public class CustomerService : EntityService<Customer>, ICustomerService
{
    public string UserId;
    IContext context;
    public CustomerService(IContext context) : …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net asp.net-mvc asp.net-identity

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

在运行时更改 log4net 文件名而不更改附加程序

我想在运行时更改我的日志名称而不更改附加程序。基本上,一旦到了一天中的某个设定时间,我希望能够使用不同的文件。

这是我的 appender 的样子:

<appender name="info" type="log4net.Appender.RollingFileAppender">
   <file value="logs\" />
   <datePattern value="yyyyMMdd'_INFO.log'" />
   <staticLogFileName value="false" />
   <appendToFile value="true" />
   <rollingStyle value="Composite" />
   <maxSizeRollBackups value="10" />
   <maximumFileSize value="10MB" />
   <layout type="log4net.Layout.PatternLayout">
     <conversionPattern value="%newline[%date]-%level-%logger[%M]- Linea:%L - %message%newline"/>
   </layout>
   <filter type="log4net.Filter.LevelRangeFilter">
     <param name="LevelMin" value="INFO"/>
     <param name="LevelMax" value="INFO"/>
   </filter>
 </appender>
Run Code Online (Sandbox Code Playgroud)

这是我遍历 appender 的函数:

   public void SetLogFile(string fileName)
   {
       foreach (var appender in log.Logger.Repository.GetAppenders())
       {
           try
           {
               ((log4net.Appender.FileAppender)appender).File = fileName;
               ((log4net.Appender.FileAppender)appender).ActivateOptions();
           }
           catch (Exception ex)
           {
               Console.WriteLine(ex.Message);
           }
       }
   }

   SetLogFile("log1.txt");
Run Code Online (Sandbox Code Playgroud)

它为此特定示例创建以下文件:

log1.txt20171221_INFO.log

我希望我的日志文件被命名,log1.txt …

.net c# log4net log4net-configuration log4net-appender

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

不包含在JSON中时,必需的数字参数默认为0

我有一个模型,我使用DataAnnotations来执行验证,例如

public class OrderDTO
{
    [Required]
    public int Id { get; set; }

    [Required]
    public Decimal Amount { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后我检查每个请求中的ModelState以确保JSON有效.

但是,我在Amount上面的数字属性方面遇到了麻烦.即使它被设置为[Required],如果它没有包含在JSON中,它将跳过ModelState验证,因为它自动默认为0而不是null,因此模型看起来有效,即使它不是.

"修复"这个的简单方法是将所有数字属性设置为可为空(int?,Decimal?).如果我这样做,默认为0并不会发生,但我不喜欢这个作为一个明确的解决方案,因为我需要改变我的模型.

有没有办法设置属性,null如果它们不是JSON的一部分?

c# asp.net json asp.net-web-api asp.net-web-api2

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

最佳实践:我应该将价格和成本存储为NULL还是NOT NULL?

我正在使用由许多人随着时间推移开发的数据库.关于成本或价格的领域存在许多不一致之处; 在某些表中,这些列为NULL,而在其他表中,它们不是NULL.我正在考虑将表格和代码更新为某个标准.

我看到允许NULL的唯一优点是你没有设置值(NULL)或设置为空白(0.00)的值之间的区别.如果列是非NULL,则所有记录默认为0.00,并且您将无法确定用户将哪些记录设置为0.00.另一方面,对于用户在系统中将成本或价格设置为0.00没有任何意义.

在您看来,最佳做法是什么?

sql t-sql sql-server null

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