我正在使用SQL Server,并尝试从同一个表中更新行.我想使用表别名来提高可读性.
这就是我现在这样做的方式:
UPDATE ra
SET ra.ItemValue = rb.ItemValue
FROM dbo.Rates ra
INNER JOIN dbo.Rates rb
ON ra.ResourceID = rb.ResourceID
WHERE ra.PriceSched = 't8'
AND rb.PriceSched = 't9'
Run Code Online (Sandbox Code Playgroud)
有更简单/更好的方法吗?
我正在加载图像文件硬盘驱动器的二进制字节并将其加载到Bitmap对象中.如何从Bitmap对象中找到图像类型[JPEG,PNG,BMP等]?
看起来微不足道.但是,想不出来!
有替代方法吗?
感谢您的回复.
更新正确的解决方案:
@CMS:感谢您的正确回复!
实现此目的的示例代码.
using (MemoryStream imageMemStream = new MemoryStream(fileData))
{
using (Bitmap bitmap = new Bitmap(imageMemStream))
{
ImageFormat imageFormat = bitmap.RawFormat;
if (bitmap.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Jpeg))
//It's a JPEG;
else if (bitmap.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Png))
//It's a PNG;
}
}
Run Code Online (Sandbox Code Playgroud) 我建立了自己的项目模板.使用模板创建项目时,将启动自定义向导,允许用户编辑已创建的项目.
问题是我还需要为创建的项目添加一些非常简单的nuget包(只有mvvmlight,MyToolkit和另外1个).为此WizardData,我使用正确的包向我的vstemplate 添加了一个元素.
问题出现了:为了启动我的自定义向导,我需要在WizardExtension元素内部引用我的向导.但是为了自动安装nuget包,我需要NuGet.VisualStudio.TemplateWizard在我的WizardExtension元素中放置一个引用,并且WizardExtension只能有一个它将实例化的类,但我有2个需要运行.
那么我该如何解决这个问题呢?
这是启动我自己的向导的代码.现在我只需要安装NuGet包:
<WizardExtension>
<Assembly>PartyTemplateWizard, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=7eb2f41084fd4cd5</Assembly>
<FullClassName>PartyTemplateWizard.Wizard</FullClassName>
</WizardExtension>
<WizardData>
<packages repository="template">
<package id="MvvmLight" version="4.1.27.0" />
<package id="MvvmLightLibs" version="4.1.27.0" />
<package id="MyToolkit" version="1.14.0" />
<package id="linqtotwitter" version="2.1.06" />
</packages>
</WizardData>
Run Code Online (Sandbox Code Playgroud)
有没有人有办法解决吗?
JSON.NET框架可以将XML转换为JSON,但它使用JSON中的@符号作为属性.我希望在将它发送到视图之前删除它.对此最好的方法是什么?
我知道我可以直接替换,但@字符在某处可能是相关的,不应该被替换.这有正则表达式吗?
public ActionResult Layout()
{
var xml = new XmlDocument();
xml.XmlResolver = null;
xml.Load(Server.MapPath("~/App_Data/Navigation.xml"));
return Content(JsonConvert.SerializeXmlNode(xml, Newtonsoft.Json.Formatting.Indented));
}
Run Code Online (Sandbox Code Playgroud)
{
"Layout": {
"Navigation": [
{
"@Type": "Menu",
"@Title": "Dashboard"
},
{
"@Type": "Menu",
"@Route": "Events",
"@Title": "Events",
"Navigation": {
"@Type": "Action",
"@Route": "Event",
"@Title": "+ Add Event",
"@Order": "1",
"Navigation": {
"@Type": "Item",
"@Route": "Event",
"@Name": "Event",
"Navigation": [
{
"@Route": "Pools",
"@Type": "SubNavigation",
"@Name": "Pools"
},
{
"@Route": "Brackets",
"@Type": "SubNavigation",
"@Name": "Brackets"
}
]
}
}
}
] …Run Code Online (Sandbox Code Playgroud) DECLARE @str VARCHAR (MAX);
SELECT @str = COALESCE(@str + CHAR(10), '') +
'EXECUTE CreateDeno ' + CAST(ID AS VARCHAR)
FROM GL_To_Batch_Details
WHERE TYPE = 'C' AND
Deno_ID IS NULL;
--PRINT @str;--SELECT @str;
**EXEC(@str);**
Run Code Online (Sandbox Code Playgroud)
EDITED
EXECUTE语句是否将字符串截断为8,000个字符PRINT?如何执行具有超过8,000个字符的动态SQL语句?
任何建议都会受到热烈的赞赏.
DotNetNuke是否提供任何内置的错误记录框架?我的客户端正在使用DotNetNuke,我没有看到全局错误记录框架.我看到下面的课有一些try/catch使用它们.
namespace DotNetNuke.Services.Exceptions
{
[StandardModule]
public sealed class Exceptions
{
public static ExceptionInfo GetExceptionInfo(Exception e);
public static void LogException(Exception exc);
public static void LogException(ModuleLoadException exc);
public static void LogException(PageLoadException exc);
public static void LogException(SchedulerException exc);
public static void LogException(SecurityException exc);
public static void LogSearchException(SearchException exc);
public static void ProcessModuleLoadException(Control ctrl, Exception exc);
public static void ProcessModuleLoadException(PortalModuleBase objPortalModuleBase, Exception exc);
public static void ProcessModuleLoadException(Control ctrl, Exception exc, bool DisplayErrorMessage);
public static void ProcessModuleLoadException(PortalModuleBase objPortalModuleBase, Exception exc, bool DisplayErrorMessage);
public static void …Run Code Online (Sandbox Code Playgroud) A有一个ListBox项,每个ListBoxItem都包含一个Path对象形式的图标,如下所示:
<ListBox.ItemTemplate>
<DataTemplate>
<Grid ...>
...
<Path Margin="4" Style="{StaticResource ErrorIconPath}"
Stretch="Uniform" Width="26" Height="26"
RenderTransformOrigin="0.5,0.5" Grid.Column="1" Grid.Row="1"
UseLayoutRounding="False"
HorizontalAlignment="Center" VerticalAlignment="Center" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
Run Code Online (Sandbox Code Playgroud)
Path的样式包含在Appl.xaml(Application.Resourcessection)中,如下所示:
<Style x:Key="ErrorIconPath" TargetType="Path">
<Setter Property="Data" Value="F1M874.094,289.369L854.3,254.63C854.028,254.151 853.515,253.856 852.958,253.856 852.403,253.856 851.89,254.151 851.617,254.63L831.824,289.369C831.555,289.84 831.559,290.416 831.835,290.883 832.111,291.348 832.618,291.634 833.165,291.634L872.752,291.634C873.299,291.634 873.805,291.348 874.081,290.883 874.357,290.416 874.361,289.84 874.094,289.369 M855.653,287.189L850.264,287.189 850.264,282.745 855.653,282.745 855.653,287.189z M855.653,279.41L850.264,279.41 850.264,266.077 855.653,266.077 855.653,279.41z" />
</Style>
Run Code Online (Sandbox Code Playgroud)
问题是只有ListBox中的第一个项目Data按预期绑定属性,其他项目根本没有绑定它(因此它们显示为空格,但匹配的大小Path).此外,当我在其他任何地方(即ListBox之外)使用样式时,只会发生第一个发生的实例.
奇怪的是,如果我在内联中定义Fill属性Style而不是内联,它可以正常工作并且不会出现与Path属性相同的问题.
我的猜测是,这与Data不是原始类型有关,但我没有找到任何修复.
编辑:有趣的是,当我将Data属性直接绑定到System.String …
我正在为DotNetNuke 6网站构建REST API,利用DNN基于MVC的服务框架.但是,我没有任何身份验证背景,所以我甚至不确定从哪里开始.
基本上,我们希望我们的客户能够对其门户网站的数据进行GET请求,并且我们希望一些客户端(但不是所有客户端)能够对其用户数据发布简单更新.
我一直在努力寻找信息,但问题是我不确定我在寻找什么.DNN有不同的登录和角色,但我不确定他们是否或如何参与.我听说过像oAuth这样的事情,但我对它的理解是最基本的.我不知道这是否是我需要的,以及它是否或如何适用于DNN.谁能指出我正确的方向?
更新:根据以下答案,将其与模块和进一步的研究结合起来,这就是我所做的:
我为这项服务创建了一个模块,我为它添加了两个特殊权限:"APIGET"和"APIPOST".我将这些分配给了DNN中的一些测试角色/测试帐户.我编写了一个自定义authorize属性,给定模块ID,检查当前用户是否具有必要的权限(通过角色或直接).据我所知,标签ID在我的情况下是无关紧要的.
它似乎既可以使用Web浏览器(基于我登录的DNN帐户),也可以使用php脚本发送带有帐户用户名/密码的HTTP请求.
授权属性:
using DotNetNuke.Entities.Modules;
using DotNetNuke.Entities.Portals;
using DotNetNuke.Security;
using DotNetNuke.Security.Permissions;
using System.Web;
public class MyAuthorize : DotNetNuke.Web.Services.AuthorizeAttributeBase
{
public const string AuthModuleFriendlyName = "MyAuthModule";
public const string GETPermission = "APIGET";
public const string POSTPermission = "APIPOST";
public string Permission { get; set; }
protected override bool AuthorizeCore(HttpContextBase context)
{
ModuleController mc = new ModuleController();
ModuleInfo mi = mc.GetModuleByDefinition(PortalController.GetCurrentPortalSettings().PortalId, AuthModuleFriendlyName);
ModulePermissionCollection permCollection = mi.ModulePermissions;
return ModulePermissionController.HasModulePermission(permCollection, Permission);
}
}
Run Code Online (Sandbox Code Playgroud)
控制器:("mytest"是GET和POST的端点)
public class MyController …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个SQL Server中的多租户工具.我正在考虑这里描述的共享数据库,共享架构和租户视图过滤器.唯一的缺点是碎片连接池......
根据http://msdn.microsoft.com/en-au/architecture/aa479086,租户视图过滤器描述如下:
"SQL视图可用于授予单个租户访问给定表中某些行的权限,同时防止他们访问其他行.
在SQL中,视图是由SELECT查询的结果定义的虚拟表.然后可以查询生成的视图并将其用于存储过程,就好像它是一个实际的数据库表一样.例如,以下SQL语句创建一个名为Employees的表的视图,该表已被过滤,以便只显示属于单个租户的行:
CREATE VIEW TenantEmployees AS
SELECT * FROM Employees WHERE TenantID = SUSER_SID()
Run Code Online (Sandbox Code Playgroud)
此语句获取访问数据库的用户帐户的安全标识符(SID)(您可以回忆,它是属于租户的帐户,而不是最终用户),并使用它来确定视图中应包含哪些行"
考虑到这一点,如果我们有一个数据库存储5,000个不同的租户,那么连接池就完全碎片化,每次向数据库发送请求时,ADO.NET都需要建立一个新的连接并进行身份验证(请记住连接池适用于每个唯一连接字符串)这种方法意味着你有5,000个连接字符串......
我有多担心这件事?有人能给我一些真实世界的例子,说明连接池对繁忙的多租户数据库服务器有多大影响(比如每秒处理100个请求)?我可以在这个问题上投入更多硬件吗?它会消失吗?
思绪??
我怎么能这样做query用LINQ and LAMBDA?
QUERY
Select san_negocio.imovel_id
,san_negocio.negocio_id
,san_imovel.credenciada_id
,san_proposta.proposta_id
,san_proposta.credenciada_id
from san_negocio
join san_proposta
on san_negocio.imovel_id = san_proposta.imovel_id
join san_imovel
on san_negocio.imovel_id = san_imovel.imovel_id
where san_negocio.credenciadacaptadora_id is null
and san_negocio.credenciadavendedora_id is null
and san_proposta.statusproposta_id = 2
Run Code Online (Sandbox Code Playgroud)
我试过了:
var objetos = db.San_Negocio.Join(db.San_Proposta, a => a.Imovel_Id, b => b.Imovel_Id, (a, b) => new { San_Negocio = a, San_Proposta = b })
.Join(db.San_Imovel, a => a.San_Negocio.Imovel_Id, c => c.Imovel_Id, (a, c) => new { San_Negocio = a, San_Imovel = …Run Code Online (Sandbox Code Playgroud) c# ×2
dotnetnuke ×2
sql-server ×2
.net ×1
image ×1
json ×1
json.net ×1
lambda ×1
linq ×1
multi-tenant ×1
performance ×1
styles ×1
t-sql ×1
wizard ×1
wpf ×1
xaml ×1
xml ×1