我在Quartz.NET文档的这个教程部分看到,应该可以定义Quartz调度程序将使用的最大线程数.在我的特殊情况下,我想将此数字设置为1.但是在API文档中,我找不到一种方法来访问我的调度程序正在使用的线程池实例并在其上设置任何属性.
目前我的代码如下所示:
ISchedulerFactory schedFact = new StdSchedulerFactory();
IScheduler scheduler = schedFact.GetScheduler();
scheduler.Start();
// Setup jobs and triggers and then call scheduler.ScheduleJob...
Run Code Online (Sandbox Code Playgroud)
有人知道如何设置池中的线程数吗?
提前感谢您的帮助!
在运行时我加载一个程序集
Assembly assembly = Assembly.LoadFrom(@"c:\MyFolder\MyAssembly.dll");
Run Code Online (Sandbox Code Playgroud)
如果程序集位于该文件夹中,则此方法有效.
如果程序集不在文件夹中,我会得到一个例外,当然告诉我无法找到程序集或其中一个依赖项.
我正在捕获异常并向用户显示错误消息.该程序继续运行.
如果我现在将缺少的程序集复制到文件夹"c:\ MyFolder",同时程序仍在运行并再次触发执行上述行的函数,我得到相同的异常 - 一个System.IO.FileNotFoundException - 再次表示程序集可以虽然DLL现在在文件夹中,但是找不到.
如果我重新启动应用程序,它就可以运行并找到程序集.如果我在应用程序启动后第一次尝试加载程序集之前启动应用程序并将DLL复制到该文件夹,它也可以工作.
所以问题似乎与第一次失败的呼叫有关Assembly.LoadFrom
.
这种行为可能是什么原因,我该怎么做才能解决问题?
提前感谢您的帮助!
编辑:还有一个细节:
我添加了一个File.Exists
测试:
string filename = @"c:\MyFolder\MyAssembly.dll";
bool test = File.Exists(filename);
Assembly assembly = Assembly.LoadFrom(filename);
Run Code Online (Sandbox Code Playgroud)
test
返回,true
但Assembly.LoadFrom
抛出一个FileNotFoundException
.
我有两个ViewModel(简化):
public class ParentViewModel
{
public ParentViewModel
{
Content = new ChildViewModel();
}
public ChildViewModel Content { get; set, }
}
public class ChildViewModel
{
[Required]
public string Name1 { get; set, }
[Required]
public string Name2 { get; set, }
}
Run Code Online (Sandbox Code Playgroud)
以下控制器发布动作:
[HttpPost]
public ActionResult Create(ParentViewModel viewModel)
{
if (ModelState.IsValid)
{
// process viewModel -> write something into database
return RedirectToAction("Index");
}
return View(viewModel);
}
Run Code Online (Sandbox Code Playgroud)
现在我将后续请求正文中的以下表单值发送到与该操作对应的URL(在Fiddler Request Builder中手动):
Content.Name1 = X
这样工作正常,Name1
属性填写viewModel.Content
,Name2
是null …
在我的应用程序中,我有两个经常使用的查询.这些查询的Where子句如下:
WHERE FieldA = @P1 AND (FieldB = @P2 OR FieldC = @P2)
Run Code Online (Sandbox Code Playgroud)
和
WHERE FieldA = @P1 AND FieldB = @P2
Run Code Online (Sandbox Code Playgroud)
P1
并且P2
是在UI中输入或来自外部数据源的参数.
int
非常独特的,意味着:表中只有两个,三个,四个不同的值,比如20000行varchar(20)
并且"几乎"是唯一的,FieldB可能只有很少的行可能具有相同的值varchar(15)
非常独特的,但不如FieldB我现在想知道定义索引以最好地加速这两个查询的最佳方法是什么.我应该用...定义一个索引
FieldB (or better FieldC here?)
FieldC (or better FieldB here?)
FieldA
Run Code Online (Sandbox Code Playgroud)
...或更好的两个指数:
FieldB
FieldA
Run Code Online (Sandbox Code Playgroud)
和
FieldC
FieldA
Run Code Online (Sandbox Code Playgroud)
还是有其他更好的选择吗?什么是最好的方式和原因?
提前感谢您的建议!
编辑:
正如其他读者的信息:这是另一个已被删除的答案.实际上答案对我来说似乎非常有用.建议是创建两个索引(根据我上面的第二个选项)并通过使用UNION
两个select语句(一个带有WHERE FieldA = @P1 AND FieldB = @P2
一个和一个带有WHERE FieldA = @P1 AND FieldC = @P2
)来重新构造第一个查询,而不是OR
从两个索引中受益(事实并非如此)使用OR运算符). …
我有一个像这样的对象模型:
public class Quantity
{
public decimal Weight { get; set; }
public decimal Volume { get; set; }
// perhaps more decimals...
public static Quantity operator +(Quantity quantity1, Quantity quantity2)
{
return new Quantity()
{
Weight = quantity1.Weight + quantity2.Weight,
Volume = quantity1.Volume + quantity2.Volume
};
}
}
public class OrderDetail
{
public Quantity Quantity { get; set; }
}
public class Order
{
public IEnumerable<OrderDetail> OrderDetails { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在我想TotalQuantity
在Order
类上引入一个readonly属性,它应该总结所有OrderDetails的数量.
我想知道是否有比这更好的"LINQ方式":
public …
Run Code Online (Sandbox Code Playgroud) 我有2个实体User和User_Profile(一对一的关系).我将它们链接如下:
public class User
{
[Key]
[ForeignKey("user_profile")]
public int user_id {get;set;}
public string username {get;set;}
public string email {get;set;}
public virtual User_Proile user_profile {get;set;}
}
public class User_Profile
{
[Key]
public int user_id {get;set;}
public string firstname {get;set;}
public string lastname {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
user_id是SQL Server的User和User_Profile表中的PK.它还在User表中设置为Identity列.
当我尝试通过EFDBContext Add/SaveChanges插入新记录时.我收到以下错误:"User_rofile表中的user_id不能为NULL"这非常有意义,因为这是一个PK列.我希望EF能够从用户获取Identity user_id并在保存时将其插入User_Profile user_id.
这是可能的,如果是这样,我将如何实现?
更新:请注意我手动创建了数据库表和代码类,因此我无法通过.edmx文件访问StoreGeneratedPattern.
我有一类内容,它应该能够有一个parentId用于继承,但我希望它有一个子内容列表,这与这个继承树无关.
我基本上想要一个链接表作为ChildContentRelationship与Id的parentContent和childContent在其中,Content类将有一个ChildContentRelationship列表.
这导致了很多错误.
我有点想做
public class Content
{
public int Id { get; set; }
public int? ParentContentId { get; set; }
public virtual Content ParentContent { get; set; }
public string Name { get; set; }
public int ContentTypeId { get; set; }
public virtual ContentType ContentType { get; set; }
public virtual ICollection<Property> Properties { get; set; }
public virtual ICollection<ChildContentRelationship> ChildContent { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我如何在EF中设置它?
sql entity-relationship entity-framework ef-code-first entity-framework-4.1
如果我有一个类型的变量,IQueryable<T>
我可以Where
在命名空间中Systm.Linq
使用四种扩展方法:
public static IQueryable<T> Where<T>(this IQueryable<T> source,
Expression<Func<T, bool>> predicate);
public static IQueryable<T> Where<T>(this IQueryable<T> source,
Expression<Func<T, int, bool>> predicate);
public static IEnumerable<T> Where<T>(this IEnumerable<T> source,
Func<T, bool> predicate);
public static IEnumerable<T> Where<T>(this IEnumerable<T> source,
Func<T, int, bool> predicate);
Run Code Online (Sandbox Code Playgroud)
(最后两个因为IQueryable<T>
继承自IEnumerable<T>
.)
如果我使用类型的变量ObjectQuery<T>
(在命名空间中System.Data.Objects
),我有五个Where
可用的重载,即上面的四个(因为ObjectQuery<T>
实现IQueryable<T>
和IEnumerable<T>
其他接口)以及此类的实例方法:
public ObjectQuery<T> Where(string predicate,
params ObjectParameter[] parameters);
Run Code Online (Sandbox Code Playgroud)
如果我在使用任何一个时遇到相同的编程错误,IQueryable<T>
或者ObjectQuery<T>
我得到了非常不同的编译错误 这是一个示例程序(VS2010 SP1中的标准C#控制台应用程序模板+ System.Data.Entity.dll
程序集引用的程序集,编译器错误在以下四个示例的注释中):
using …
Run Code Online (Sandbox Code Playgroud) 我有三张桌子:
我想选择所有订单,无论他们是否有客户,如果他们有客户,那么也是客户的公司名称.
如果我使用此查询...
SELECT Orders.OrderId, Customers.CustomerId, Companies.Name
FROM Orders
LEFT OUTER JOIN Customers
ON Orders.CustomerId = Customers.CustomerId
INNER JOIN Companies
OM Customers.CompanyId = Companies.CompanyId
Run Code Online (Sandbox Code Playgroud)
...它只返回有客户的订单.如果我替换INNER JOIN
为LEFT OUTER JOIN
......
SELECT Orders.OrderId, Customers.CustomerId, Companies.Name
FROM Orders
LEFT OUTER JOIN Customers
ON Orders.CustomerId = Customers.CustomerId
LEFT OUTER JOIN Companies
OM Customers.CompanyId = Companies.CompanyId
Run Code Online (Sandbox Code Playgroud)
......它的工作原理,但我不明白为什么,因为之间的关系,这是必要的Customers
,并Companies
要求:客户必须有一个公司.
一种可行的替代方法似乎是: …
使用EF 5(逆向工程代码优先),我的模型工作正常,直到它突然停止.
\ tSystem.Data.Entity.Edm.EdmEntityType :: EntityType'Projects.Date'没有定义键.定义此EntityType的键.
\ tSystem.Data.Entity.Edm.EdmEntityType :: EntityType'ProjectstRisk'没有定义键.定义此EntityType的键.
我使用流畅的API而不是属性来定义键,这是我的ProjectsDates类.
Run Code Online (Sandbox Code Playgroud)public partial class ProjectsDate { public string OSProjectCode { get; set; } public Nullable<System.DateTime> TargetStart { get; set; } public Nullable<System.DateTime> EndDateOriginal { get; set; } public Nullable<System.DateTime> EndDateChangeControl { get; set; } public Nullable<System.DateTime> EndDateActual { get; set; } public Nullable<System.DateTime> GoLiveAgreed { get; set; } public Nullable<System.DateTime> GoLiveActual { get; set; } public virtual Project Project { get; set; } }
public class ProjectsDateMap : EntityTypeConfiguration<ProjectsDate>
{ …
Run Code Online (Sandbox Code Playgroud) c# ×5
.net ×4
sql ×3
linq ×2
sql-server ×2
asp.net ×1
asp.net-mvc ×1
assemblies ×1
database ×1
indexing ×1
join ×1
model ×1
overloading ×1
quartz.net ×1
t-sql ×1
validation ×1