小编Mor*_*goZ的帖子

在Entity Framework Core 2.0中执行SQL命令以删除表中的所有数据

我想从Entity Framework Core 2.0执行一个SQL命令,但我无法弄清楚如何这样做.

1.-我需要的原因是,我想删除数据库表中的所有数据,并使用Context.removeContext.removeRange将产生许多对DB的调用(表中的每个数据都有一个).

2.-我已经读过有一种方法.ExecuteSqlCommand可以实现这一点,但是我的Context.Database中没有该方法(可能在Core 2.0中它被删除了吗?).以下是信息的来源:实体框架核心和UWP中的删除表

所以,基本上我需要使用EF Core 2.0从代码中删除一个表,据我所知,我需要为此执行一个SQL命令.

谢谢.

这是我的.csproj,以防万一我错过了什么

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.0" PrivateAssets="All" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.0.0" PrivateAssets="All" />    
  </ItemGroup>

  <ItemGroup>
    <!--<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.1.1" />    -->
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
  </ItemGroup>

</Project>
Run Code Online (Sandbox Code Playgroud)

c# sql entity-framework-core asp.net-core-2.0

17
推荐指数
4
解决办法
2万
查看次数

使用Javascript客户端的WCF自托管WebSocket服务

我有这个WCF自托管的WebSocket服务代码:

主要:

//Create a URI to serve as the base address
Uri httpUrl = new Uri("http://192.168.1.95:8080/service");
//Create ServiceHost
ServiceHost host = new ServiceHost(typeof(WebSocketService), httpUrl);            
//Add a service endpoint
host.AddServiceEndpoint(typeof(IWebSocket), new NetHttpBinding(), "");
//Enable metadata exchange
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
host.Description.Behaviors.Add(smb);
//Start the Service
host.Open();

Console.WriteLine("Service is host at " + DateTime.Now.ToString());
Console.WriteLine("Host is running... Press <Enter> key to stop");
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

接口:

namespace IWebSocketHostTest
{
    [ServiceContract]
    interface IWebSocketCallBack
    {
        [OperationContract(IsOneWay = true)]
        void Send(int num);
    }

    [ServiceContract(CallbackContract …
Run Code Online (Sandbox Code Playgroud)

javascript c# wcf self-hosting websocket

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

澄清身份授权:将声明用作角色,角色和声明或角色声明

我从ASP.NET身份的声明授权开始,如果我需要在我的应用程序中使用"角色"概念,我想澄清继续使用它们的方式.

注意:我对此真的很新,所以所有的概念都在脑子里浮现,请善待,任何概念的进一步澄清/更正将非常感激.

1.-假设,我需要管理员和用户角色的"角色"概念,所以我的第一个想法是将声明添加到ApplicationUser:

user.Claims.Add(new IdentityUserClaim<string> { ClaimType = "Role", ClaimValue = "Admin" });
Run Code Online (Sandbox Code Playgroud)

*"用户"是一个ApplicationUser.

但后来我读到它已经由框架完成,因为它有一些预定义的声明类型,所以上面的代码可能是:

user.Claims.Add(new IdentityUserClaim<string> { ClaimType = ClaimTypes.Role, ClaimValue = "Admin" });
Run Code Online (Sandbox Code Playgroud)

这种方法是否正确?或者我应该使用"旧"角色概念并向用户添加角色,如:

await _roleManager.CreateAsync(new IdentityRole("Admin"));    
await _userManager.AddToRoleAsync(user, "Admin");
Run Code Online (Sandbox Code Playgroud)

2.-现在假设我将角色定义为声明,我如何检查它们的自动化?我的意思是,它会起作用吗?

[Authorize(Roles = "Admin")]
Run Code Online (Sandbox Code Playgroud)

或者我应该包含一个政策声明来检查角色声明?

/* In startup ConfigureServices method*/
options.AddPolicy("IsAdmin", policy => {
                policy.RequireClaim(ClaimTypes.Role, "Admin");
                });

...

/*In a controller class*/
[Authorize(Policy = "IsAdmin")]
<controller here>
Run Code Online (Sandbox Code Playgroud)

3.-现在,存储我的自定义索赔的正确方法是什么?我的意思是,ASP.NET的ClaimTypes类只是一堆const string值,所有关于Claims的示例代码都将它们存储在类似的类中:

public static class ClaimData
{
    public static List<string> AdminClaims { get; …
Run Code Online (Sandbox Code Playgroud)

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

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

无尽的异步和等待?

我不明白async/await的一些东西:

async方法必须在内部进行await调用...但是如果有等待它是因为它正在调用另一个异步方法,对吧?所以它似乎是一个无休止的异步方法链,等待内部调用另一个异步方法.

因此可以创建一个"第一"异步方法,而不是调用任何其他异步方法.只需创建一个异步方法,因为该方法可以完成许多可能会降低系统速度的工作.

.net c# asynchronous async-await

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

从XAML调用代码隐藏中定义的自定义依赖项属性

是否可以在定义它的元素的XAML中调用自定义依赖项属性?

我的意思是,我的mainWindow有以下简单代码:

public partial class MainWindow : Window
{

    public static readonly DependencyProperty SpecialToProperty =   DependencyProperty.Register("SpecialTo", typeof(double), typeof(MainWindow));

    public MainWindow()
    {

        InitializeComponent();

    }

    public double SpecialTo
    {
        get
        {
            return (double)GetValue(SpecialToProperty);
        }
        set
        {
            SetValue(DoubleAnimation.ToProperty, value);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如何从MainWindow类的XAML部分代码中使用该依赖项属性?

我的意思是:

<Window x:Class="WpfAnimationTEst.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525"        
    SpecialTo=200>
Run Code Online (Sandbox Code Playgroud)

我知道可以使用附加的依赖属性来完成它,但这是唯一的方法吗?是不是可以调用代码隐藏中定义的依赖项属性?

谢谢你,如果这个问题有点愚蠢,我很抱歉,我只是在学习并试图理解WPF.

wpf xaml dependency-properties code-behind

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

在 C# .NET Web 应用程序中每天安排任务的正确方法

我有一个 ASP.NET MVC 应用程序,可让用户存储视频和照片等媒体。

该应用程序还允许用户删除存储在服务器中的那些媒体。为此,我想实现一个“两个步骤”过程,首先(选择要删除媒体时),数据库中的媒体条目将获得一个时间戳,表示必须在一段时间内删除条目(例如一个月);如果当时没有删除该时间戳,则应该有一个每天执行的调度方法,并检查媒体条目是否具有足以被删除的时间戳。

我的问题是关于调度程序:我读过有一些框架,如 FluentScheduler 或 Quartz.NET 来实现这种作业。由于该应用程序是部署在IIS 中的Web 应用程序,因此恐怕不会使用正确的方式、框架或方法来实现它。由于 IIS 可以随时关闭我的应用程序,并且由于计划方法将执行写入数据库和 IO 文件系统以删除数据库条目和物理文件,因此该方法完全执行或不执行对我来说至关重要所有,以保持数据库与存储在 hd 的文件一致。

我的第一个赌注是 FluentScheduler,但我需要知道使用这样的框架是否是最佳解决方案。

我知道 StackOverflow 不欢迎这类问题。这不是意见问题,我只想阅读解决方案并选择最适合我的要求的解决方案。

这是调度方法内部的某种伪代码:

using(ViewMediaDBUnitOfWork uw = new ViewMediaDBUnitOfWork())
        {
            var today = DateTime.Now.Date;

            List<Media> mediaToDelete = uw.MediaRepository.Get(m => (m.ToDelete - today).value.Days > 30);
            mediaToDelete.ForEach(m =>
            {
                try
                {
                    //Deletes from DB
                    uw.MediaRepository.Delete(m);
                    //Deletes the file
                    File.Delete(m.Path);
                    //If everything is ok, savechanges
                    uw.MediaRepository.SaveChanges();
                }
                catch(Exception e)
                {
                    LogManager.GetCurrentClassLogger().Error("Error deleting. " + m.Path, e);
                }                    
            });
        }
Run Code Online (Sandbox Code Playgroud)

c# asp.net scheduled-tasks web

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

ASP.NET核心身份.使用ApplicationDbContext和UserManager.他们是否分享背景?

我在ASP.NET MVC Core 2应用程序中有一个数据库初始化方法.在该方法中,我使用ApplicationDbContext和UserManager来初始化数据库.我从构造函数的依赖注入中获取了两个实例:

public static void Initialize(ApplicationDbContext context,
            UserManager<ApplicationUser> user)
Run Code Online (Sandbox Code Playgroud)

我想知道的是,如果它们共享相同的上下文实例,或者为ApplicationDbContext创建了一个上下文,而为UserManager创建了另一个上下文.如果我执行这样的事情:

ApplicationUser adminTeacherUser = new ApplicationUser
            {
                UserName = "test@test.com",
                Email = "test@test.com",
                EmailConfirmed = true,
                Name = "test",
                LastName = "test",
                BirthDate = null,
                EntryDate = DateTime.Now                    
            };

            userManager.CreateAsync(adminTeacherUser, "password").Wait();
Run Code Online (Sandbox Code Playgroud)

在CreateAsync调用之后,用户在数据库中创建.

但是,如果那时我像这样更新用户:

adminTeacherUser.Name = "other";                
userManager.UpdateAsync(adminTeacherUser);
Run Code Online (Sandbox Code Playgroud)

调用UpdateAsync后,数据库中不会更新任何内容.用户名仍然是"测试".

但是,如果那时我执行:

context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

将应用更改并更新数据库.

那么,为什么CreateAsync方法"保存其更改"而不显式调用"context.SaveChanges"并且UpdateAsync方法需要它?ApplicationDbContext实例是通过依赖注入得到的,与CreateAsync使用的相同吗?

谢谢.

c# asp.net-identity asp.net-core

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

Windows 将 Windows 服务中的事件日志存储多长时间

我正在使用 Windows 事件日志来记录来自自定义 Windows 服务的日志。

如果我需要阅读昨天的日志,我会转到 EventViewer,查找我的 EventLog 并阅读它。但是我担心如果我需要访问几个月甚至几年前的日志会发生什么。是否可以?Windows 将我的日志存储多长时间?它可以从我的服务中配置吗?

我是否应该使用像 NLog 这样的第三方记录器,它可能比我的服务的 Windows 事件日志更好?

c# logging windows-services event-log

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

具有公共getter和private setter的Python属性

我有一个像这样的python属性:

class Foo:

    @property
    def maxInputs(self):
        return self._persistentMaxInputs.value

    @maxInputs.setter
    def maxInputs(self, value):
        self._persistentMaxInputs.value = value
Run Code Online (Sandbox Code Playgroud)

目前,maxInputs每个人都可以获取和设置的值。

但是,我希望所有人都可以获取的值maxInputs,但只能在Foo类内部进行设置。

那么,有没有一种方法可以使用私有设置程序和公共获取程序声明属性?

python properties getter-setter

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

ASP.NET Core空项目。如何使凉亭和wwwroot正常工作

我已经启动了一个新的ASP.NET Core空项目,并希望通过Bower添加引导程序和JQuery,但是没有“ bower.json”文件。因此,我添加了以下内容:

{
  "name": "asp.net",
  "private": true,
  "dependencies": {
    "bootstrap": "3.3.7",
    "jquery": "2.2.0",
    "jquery-validation": "1.14.0",
    "jquery-validation-unobtrusive": "3.2.6"
  }
}
Run Code Online (Sandbox Code Playgroud)

然后,新文件夹“ Bower”出现在“ Dependencies”,隐藏的文件夹“ bower_components”包含所有代码,但“ wwwroot”仍然为空,如下图所示。

在此处输入图片说明

因此,当更改bower.json文件时,如何使其自动将文件添加到“ wwwroot”文件夹中,以便可以在项目中使用它?

bower asp.net-core-mvc asp.net-core wwwroot

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

如何删除数组的子数组

我怎么样remove a group of elements inside an array

我有以下代码:

private void processResponse(byte[] response)
    {            
        byte[] header;
        byte[] payload;

        if (response.Length > 8)
        {
            header = response.Take<byte>(8).ToArray();
            //payload = //should be the rest of "response" bytes
        }           
    }
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能让payloadresponseheader

c# linq arrays

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

Python。覆盖一个方法而不创建派生类并调用原始方法

我有一个功能,如:

ModuleA.py

Class FooClass:
    def fooMethod(self):
        self.doSomething()
Run Code Online (Sandbox Code Playgroud)

现在我想覆盖该方法,但不从该类派生并从内部调用被覆盖的方法:

ModuleB.py

from ModuleA import FooClass

def _newFooMethod(self):
    if(not hasAttr(self,"varA "):
        self.varA = 0
    #Do some checks with varA

    #CALL ORIGINAL fooMethod

FooClass.fooMethod = _newFooMethod
Run Code Online (Sandbox Code Playgroud)

须知:

  • 我无权访问 FooClass。

  • 我无权访问 FooClass 的实例,因为它们很多而且不在一个地方。

  • 如您所见,我真正想要的是装饰 fooMethod。
  • 我还想创建一个像“varA”这样的变量来在 _newFooMethod 中使用它。我首先检查它是否已经创建,如果没有则创建它,但我不知道这是否是最好的方法......

python

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