我想从Entity Framework Core 2.0执行一个SQL命令,但我无法弄清楚如何这样做.
1.-我需要的原因是,我想删除数据库表中的所有数据,并使用Context.remove或Context.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) 我有这个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) 我从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) 我不明白async/await的一些东西:
async方法必须在内部进行await调用...但是如果有等待它是因为它正在调用另一个异步方法,对吧?所以它似乎是一个无休止的异步方法链,等待内部调用另一个异步方法.
因此可以创建一个"第一"异步方法,而不是调用任何其他异步方法.只需创建一个异步方法,因为该方法可以完成许多可能会降低系统速度的工作.
是否可以在定义它的元素的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.
我有一个 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) 我在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使用的相同吗?
谢谢.
我正在使用 Windows 事件日志来记录来自自定义 Windows 服务的日志。
如果我需要阅读昨天的日志,我会转到 EventViewer,查找我的 EventLog 并阅读它。但是我担心如果我需要访问几个月甚至几年前的日志会发生什么。是否可以?Windows 将我的日志存储多长时间?它可以从我的服务中配置吗?
我是否应该使用像 NLog 这样的第三方记录器,它可能比我的服务的 Windows 事件日志更好?
我有一个像这样的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类内部进行设置。
那么,有没有一种方法可以使用私有设置程序和公共获取程序声明属性?
我已经启动了一个新的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”文件夹中,以便可以在项目中使用它?
我怎么样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)
我怎样才能让payload是response不header?
我有一个功能,如:
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 的实例,因为它们很多而且不在一个地方。
c# ×8
asp.net-core ×2
python ×2
.net ×1
arrays ×1
asp.net ×1
async-await ×1
asynchronous ×1
bower ×1
code-behind ×1
event-log ×1
javascript ×1
linq ×1
logging ×1
properties ×1
self-hosting ×1
sql ×1
wcf ×1
web ×1
websocket ×1
wpf ×1
wwwroot ×1
xaml ×1