在ASP.NET Core/EntityFramework Core中,services.AddDbContext <>方法将指定的上下文添加为作用域服务.我的理解是,这是Microsoft建议的dbcontext生命周期管理.
然而,我们的工程师部门对此有很多争论,许多人认为需要尽快处理上下文.那么,将dbcontext配置为Transient仍然保持通常使用的相同Repository模式(即将上下文直接注入存储库的构造函数)以及支持灵活的单元测试的最佳方法是什么?
当我查看ASP.NET 3 Identity时,它使用a string而不是a Guid用于唯一主键.
在我的Entity Framework code first用户ApplicationUser类中,我继承了Identity类
public class ApplicationUser : IdentityUser
{
}
Run Code Online (Sandbox Code Playgroud)
这导致在我创建实体框架迁移时aspnetusers,使用密钥类型nvarchar(450)而不是创建的表创建uniqueidentifier
当我将它与ASP.NET Identity 2 ENtity Framework项目进行比较时,它创建了一个ID字段uniqueidentifier而不是nvarchar(450)
我会想象对于数据库性能主键和外键uniqueidentifier会更好nvarchar(450)
有没有办法用于唯一键Guid而不是用string而uniqueidentifier不是nvarchar(450)用ASP.NET Identity 3?
先前有一个问题如何将String转换为Guid,但我希望数据库表Id是Guid.
当长度为nvarchar(128)时,我发现了以前的BETA的另一个问题.给出的理由是并非所有数据库都支持Guids,并且它的灵活性也发生了变化.
是否必须有一种简单的方法从字符串更改为Guid而不重写整体identity 3?
nvarchar(450)在创建SQL Server数据库约束时,实际上是过度杀伤并提供各种警告.数据库管理员肯定不会喜欢这些警告.
c# asp.net-identity entity-framework-core asp.net-identity-3 asp.net-core
在尝试启动Windows服务时,错误"某些服务会自动停止,如果它们不被其他服务使用".
我有一个不使用Windows服务配置文件并使用静态属性的服务 - 它工作正常
现在,我使用app.config文件并重建我的安装项目+服务项目.现在我安装该服务,然后尝试启动该服务 - 我收到以下错误:
如果不使用其他服务,某些服务会自动停止
服务以本地系统登录.
欢迎任何意见!谢谢.
我希望能够使用最好在XAML中定义的矢量图形作为图像控件的源,就像我现在可以像PNG一样使用光栅图像.这样我就可以轻松地在位图和矢量图像之间进行混合和匹配,如下所示:
<StackPanel>
<Image Source="Images/Namespace.png"/>
<Image Source="Images/Module.xaml"/>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
Module.xaml很可能将<DrawingImage>其作为根元素而不是<UserControl>.
实际上,我真正想要的是这个,所以我的ViewModel可以自行选择光栅或矢量图像:
<Image Source="{Binding ImageUri}"/>
Run Code Online (Sandbox Code Playgroud)
这可能吗?Image.Source可以从给定的URI加载XAML类吗?或者只能加载位图资源?
我想知道如何在MVVM模式中使用View Models进行继承.在我的应用程序中,我有一个类似于以下内容的数据模型:
class CustomObject
{
public string Title { get; set; }
}
class CustomItem : CustomObject
{
public string Description { get; set; }
}
class CustomProduct : CustomItem
{
public double Price { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,我有一个ViewModelBase类,然后将有以下View Models:
CustomObjectViewModel的粗略实现类似于以下内容:
class CustomObjectViewModel : ViewModelBase
{
private readonly CustomObject _customObject;
public CustomObjectViewModel( CustomObject customObject )
{
_customObject = customObject;
}
public string Title
{
// implementation excluded for brevity
}
}
Run Code Online (Sandbox Code Playgroud)
对我来说似乎合乎逻辑的是,我的视图模型将以与我的模型相同的方式扩展自己(CustomItemViewModel扩展CustomObjectViewModel等等).但是,我注意到,当我继承继承树时,我将添加对同一对象的其他引用.这对我来说似乎相当过分,并且想知道如何处理这个问题以及是否有可能使它更清洁.
我有一个绑定到字符串的WPF TextBlock.如果该字符串为空,我希望TextBlock以另一种颜色显示警告消息.
这很容易在代码中做,我想知道是否有一个优雅的WPF纯XAML解决方案呢?我调查了样式触发器,但语法并不是我自然而然的.
谢谢!
我将可观察字典从视图模型绑定到视图.我使用Caliburn Micro Framework.
视图:
<ListBox Name="Friends"
SelectedIndex="{Binding Path=SelectedFriendsIndex,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
SelectedItem="{Binding Path=SelectedFriend, Mode=OneWayToSource, UpdateSourceTrigger=PropertyChanged}"
Style="{DynamicResource friendsListStyle}"
IsTextSearchEnabled="True" TextSearch.TextPath="Value.Nick"
Grid.Row="2"
Margin="4,4,4,4"
PreviewMouseRightButtonUp="ListBox_PreviewMouseRightButtonUp"
PreviewMouseRightButtonDown="ListBox_PreviewMouseRightButtonDown"
MouseRightButtonDown="ListBox_MouseRightButtonDown"
Micro:Message.Attach="[MouseDoubleClick]=[Action OpenChatScreen()]" >
Run Code Online (Sandbox Code Playgroud)
视图模型类中的代码.
属性看起来像这样:
public MyObservableDictionary<string, UserInfo> Friends
{
get { return _friends; }
set
{
_friends = value;
NotifyOfPropertyChange(() => Friends);
}
}
Run Code Online (Sandbox Code Playgroud)
在Dispatcher计时器中,我每隔3秒调用一个单独的线程新服务方法.
所以我的视图模型的构造函数我有这个:
_dispatcherTimer = new DispatcherTimer();
_dispatcherTimer.Tick += DispatcherTimer_Tick;
_dispatcherTimer.Interval = TimeSpan.FromSeconds(3);
_dispatcherTimer.Start();
_threadDispatcher = Dispatcher.CurrentDispatcher;
Run Code Online (Sandbox Code Playgroud)
而计时器滴答方法在这里:
private void DispatcherTimer_Tick(object sender, EventArgs eventArgs)
{
new System.Threading.Tasks.Task(() =>
{
//get new data from server …Run Code Online (Sandbox Code Playgroud) 如何在新的ASP.NET身份系统中使用电子邮件而不是用户名?
我试着改变RegisterViewModel班级:
[Display(Name = "Email address")]
[Required(ErrorMessage = "The email address is required")]
[EmailAddress(ErrorMessage = "Invalid Email Address")]
public string UserName { get; set; }
Run Code Online (Sandbox Code Playgroud)
但是当我输入邮件地址时,我收到错误:
User name fsdfsd@fsdfsd.de is invalid, can only contain letters or digits.
Run Code Online (Sandbox Code Playgroud) 我们可以通过使用停止在上下文构造函数中创建代理
this.Configuration.ProxyCreationEnabled = false;
Run Code Online (Sandbox Code Playgroud)
在EF 4.1中创建代理有哪些优缺点?
我目前在EF Core遇到了一些问题.我有一些我需要删除的数据,我很想知道流畅的API如何工作,完全与.OnDelete()函数有关.
考虑到微软自己的网站的经典博客/帖子情景,我想知道什么实体,正是OnDelete()"目标"(缺乏一个更好的词)在某些情况下,它似乎是博客,在其他情况下,帖子.是否可以从双方定义Cascade删除(当父博客是删除帖子时),如果是这样,我想代码应该如下所示:
model.Entity<Post>().HasOne(p => p.Blog).WithMany(b => b.Posts).HasForeignKey(p => p.BlogId).OnDelete(DeleteBehavior.Cascade)
据我所知,这是说"当博客被删除时,首先删除引用此博客的所有帖子"意味着OnDelete(DeleteBehavior.Cascade)适用于博客,而不是发布.
但这是一样的吗?
model.Entity<Blog>().HasMany(b => b.Posts).WithOne(p => p.Blog).OnDelete(DeleteBehavior.Cascade)
或者是否OnDelete(DeleteBehavior.Cascade)适用于Post而不是博客?
c# entity-framework-core .net-core asp.net-core-2.0 ef-core-2.0
c# ×10
wpf ×4
asp.net-core ×2
mvvm ×2
xaml ×2
.net-core ×1
dispatcher ×1
ef-core-2.0 ×1
service ×1
windows ×1