我正在研究ASP.NET 5文档(它比旧版本更好,更好.)我知道ASP.NET 5包含一个简单的内置控制反转(IoC)容器,默认支持构造函数注入.据我所知,配置服务和依赖是在ConfigureServices()方法内部完成的.
该ConfigureServices()方法在StartUp方法之后调用.
所以我的问题是:ASP.NET 5如何在内部注入Startup的依赖项?
我想知道,因为如果我想注入另一个依赖项,例如IFooEnviroment我该怎么做?
elvis运算符,即null条件运算符,非常酷.
在LINQ查询中,它与null合并"??"一致很好用 运营商.
Somedata.Where(dt=>(dt?.Inner?.InnerMost?.Include=="Yes")??false);
Run Code Online (Sandbox Code Playgroud)
但是如果你需要施放中间值,你会怎么做?
对于链中的一个链接,它可以正常工作.
Somedata.Where(dt=>(
((InnerClass)dt?.Inner)
?.InnerMost)?.Include=="Yes")
??false);
Run Code Online (Sandbox Code Playgroud)
但是通过额外的必要施法,施法和调用被"驱散".
Somedata.Where(dt=>(
((InnerMostClass) <=== Cast
((InnerClass)dt?.Inner)
?.InnerMost)?.Include=="Yes")) <=== Use
??false);
Run Code Online (Sandbox Code Playgroud)
可能在这里不止一次弄乱了括号,但我希望你明白这个想法.
虽然这个"火车残骸"调用链是一种代码味道,但这样做是否有更具表现力的方式来提高简洁性和清晰度?
c# linq null-coalescing-operator c#-6.0 null-conditional-operator
我有一个非常简单的EF操作失败:打破两个实体之间的关系,如下面的代码所示:
public async Task RemoveCurrentTeacherOfGroup(int groupId)
{
var group = await _dataContext.Groups.SingleAsync(g => g.Id == groupId);
group.Teacher = null;
await _dataContext.SaveChangesAsync();
}
Run Code Online (Sandbox Code Playgroud)
数据库是代码优先生成的.实体定义如下:
public class Teacher
{
public int Id { get; set; }
..
public virtual List<Group> Groups { get; set; }
}
public class Group
{
public int Id { get; set; }
..
public virtual Teacher Teacher { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然而,破坏关系不起作用,教师一直指向同一个实体.当使用调试器步进时,我看到在.Teacher = null之后,Teacher属性不会变为null.我尝试使用同步替代方案,它具有相同的效果:
public void RemoveCurrentTeacherOfGroup(int groupId)
{
var group = _dataContext.Groups.Single(g => g.Id == …Run Code Online (Sandbox Code Playgroud) 我想在实体Stuff上实现版本控制。每个实体都有对下一个版本的可选引用(最新版本为null)和对先前版本的可选引用(第一个版本为null)。我先使用实体框架6,然后编写代码。我尝试使用以下模型和modelbuilder语句(以及许多变体)。
public class Stuff
{
public int StuffId { get; set; }
[ForeignKey("NextVersion")]
public int? NextVersionId { get; set; }
[InverseProperty("PreviousVersion")]
public virtual Stuff NextVersion { get; set; }
public virtual Stuff PreviousVersion { get; set; }
}
modelBuilder.Entity<Stuff>().HasOptional(t => t.NextVersion).WithOptionalDependent(t => t.PreviousVersion);
Run Code Online (Sandbox Code Playgroud)
但是,在这种情况下,[ForeignKey(“ NextVersion”)]将被忽略,并生成一个外键NextVersion_StuffId。如何指示EF使用属性NextVersionId作为外键?
c# entity-framework foreign-keys self-reference entity-framework-6
我们的50人开发团队中有一半以上仍然使用Visual Studio 2013.尽管如此,我们还是想使用C#6.所以我们尝试使用这个解决方案:https://stackoverflow.com/a/32010632/3997704.
编译Microsoft.Net.Compilers工作正常,我们的CI环境也是如此.但是,Visual Studio在与C#6功能相关的错误列表中显示了许多错误.我试图通过使用干净的解决方案,重建,重新启动Visual Studio和清除ReSharper缓存来解决错误,但没有工作.
我尝试在C#中显示/隐藏面板,但是当我点击button1时,我想看到panel1但是出现了panel2.当我按下button2时,panel2消失了.但是当我第一次在按钮2上爬行时,panel2没有出现.我不知道我的代码有什么问题,但它是:
public Form3()
{
InitializeComponent();
}
bool show1;
bool show2;
private void button1_Click(object sender, EventArgs e)
{
if(show1)
{
panel1.Visible = false;
show1 = false;
}
else
{
panel1.Visible = true;
show1 = true;
}
Application.DoEvents();
}
private void button2_Click(object sender, EventArgs e)
{
if (!show2)
{
panel2.Visible = true;
show2 = true;
}
else
{
panel2.Visible = false;
show2 = false;
}
Application.DoEvents();
}
Run Code Online (Sandbox Code Playgroud)