我希望能够在不启动它的情况下创建任务,类似于运行var a = new Task(); a.Start();但使用自定义工厂.工厂提供StartNew(),但我找不到一种方法来分开这两个行动.这可能吗?
我有2个POCO课程(如下),并希望删除他们的两个记录之间的链接.根据这个 EF 5.0应该能够处理删除而不加载User类,如下所示:
context.Computers.Find("test").User = null;
context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
这不起作用,但使用.net 4批准的方法,它的工作原理:
en = context.Computers.Find("test");
context.Entry(en).Reference(e => e.User).Load();
en.User = null;
context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
我的EF参考是EntityFramework.dll版本5.0.0.0.我错过了一些明显的东西吗?
以下是课程:
public class Computer
{
public string Id { get; set; }
public Nullable<int> UserId { get; set; }
public virtual User User { get; set; }
}
public class User
{
public int Id { get; set; }
public virtual ICollection<Computer> Computers { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
编辑:以下链接文章中的具体行似乎与我看到的功能不一致:
要删除关系,请将navigation属性设置为null.如果您正在使用基于.NET 4.0的实体框架,则需要在将其设置为null之前加载相关的结尾.例如:
context.Entry(course).Reference(c => c.Department).Load();
course.Department = null;
Run Code Online (Sandbox Code Playgroud)
从基于.NET 4.5的Entity …
给定以下代码,是否可以为实例定义调度程序,创建和继续设置Task doThing?
我希望能够安排多个实例,doThing以便它们实际上只从其他实例运行(即使它们正在等待其他子任务).
private static async Task doThing(object i)
{
Console.WriteLine("in do thing {0}", (int)i);
await Task.Delay(TimeSpan.FromSeconds(5));
Console.WriteLine("out of do thing {0}", (int)i);
}
static void Main(string[] args)
{
CancellationTokenSource source = new CancellationTokenSource();
ConcurrentExclusiveSchedulerPair pair = new ConcurrentExclusiveSchedulerPair(TaskScheduler.Current);
Task Task1 = Task.Factory.StartNew((Func<object,Task>)doThing, 1, source.Token, TaskCreationOptions.AttachedToParent, pair.ExclusiveScheduler).Unwrap();
Task Task2 = Task.Factory.StartNew((Func<object, Task>)doThing, 2, source.Token, TaskCreationOptions.AttachedToParent, pair.ExclusiveScheduler);
Task Task3 = doThing(3);
Task Task4 = Task.Factory.StartNew(async (i) =>
{
Console.WriteLine("in do thing {0}", (int)i);
await Task.Delay(TimeSpan.FromSeconds(5));
Console.WriteLine("out of …Run Code Online (Sandbox Code Playgroud)